前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python-数据解析-Beautiful Soup-下

Python-数据解析-Beautiful Soup-下

作者头像
小团子
发布2019-07-18 15:07:53
4880
发布2019-07-18 15:07:53
举报
文章被收录于专栏:数据云团数据云团

Python-数据解析-Beautiful Soup-中

代码语言:javascript
复制
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc, 'lxml')

一、通过 CSS 选择器进行搜索

每一条 CSS 样式定义均有两部分组成

代码语言:javascript
复制
[code] 选择器 {样式} [/code]

在 {} 之前的部分就是 “选择器”。选择器指明了 {} 中样式的作用对象。

为了使用 CSS 选择器达到筛选节点的目的,在 bs4 库的 BeautifulSoup 类中提供了一个 select() 方法,该方法会将搜索到的结果放到列表中。

① 通过标签查找

在写 CSS 时,标签的名称不用加任何修饰。调用 select() 方法时,可以传入包含某个标签的字符串。

代码语言:javascript
复制
# 查找标签
soup.select("title")

② 通过类名查找

写 CSS 时,需要在类名的前面加上 “.”。

代码语言:javascript
复制
# 查找类名为 active 的标签
soup.select(".active")

③ 通过 id 名查找

在写 CSS 时,需要在 id 名称的前面加上 “#”。

代码语言:javascript
复制
# 查找 id 名为 main 的标签
soup.select("#main")

④ 通过组合的形式查找

组合查找与写 CLASS 文件时标签名、类名、id 名的组合原理一样,二者需要用空格分开。

代码语言:javascript
复制
# 在 标签 p 中,查找 id 值等于 sumbit 的内容
soup.select("p #sumbit")

可以使用 “>” 将标签与子标签分隔,从而找到某个标签下的直接子标签。

代码语言:javascript
复制
soup.select("head > title")

⑤ 通过属性查找

可以通过属性元素进行查找,属性需要用中括号括起来。但是,属性和标签属于同一个节点,它们中间不能加空格,否则将无法匹配到。

代码语言:javascript
复制
soup.select("a[href='http://example.com/']")

同样,属性仍然可以与上述查找方式组合,即不在同一节点的属性使用空格隔开,同一节点的属性之间不加空格。

代码语言:javascript
复制
soup.select('p a[href="http://example.com/"]')

上面这些查找方式都会返回一个列表。遍历这个列表,可以调用 get_text() 方法来获取节点的内容。

代码语言:javascript
复制
soup = BeautifulSoup(html_doc, 'lxml')

# 获取节点的内容
for element in soup.select("a"):
  print(element.get_text())
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-03-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据云团 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档