爬虫小小白

关于爬虫,你需要知道的BeautifulSoup(二)

2019-05-23  本文已影响1人  凡有言说

日拱一卒|数据挖掘015

阅读本文前建议先浏览:

关于爬虫,你需要知道的BeautifulSoup(一)

本篇推送涉及的代码链接:https://github.com/piyixiaeco/daily-code/blob/master/Beautiful%20Soup.ipynb

二、使用BeautifulSoup

(二)遍历文档树

遍历文档树,即从根节点 html 标签开始遍历,直到找到目标元素为止,遍历的一个缺陷是,如果你要找的内容在文档的末尾,那么它要遍历整个文档才能找到它,速度上就慢了。因此还需要配合第二种方法:搜索文档树。

1

以下面HTML文本为例


2

获取标签节点可以直接通过 .标签名方式获得

1.下行遍历

3 4 5 6

2.上行遍历

7 8 9 10

遍历所有先辈节点,包括soup本身,所以要区别判断

3.平行遍历

11

遍历文档树的另一个缺点是只能获取到与之匹配的第一个子节点,例如,如果有两个相邻的 p 标签时,第二个标签就没法通过.p的方式获取,这是需要借用 next_sibling 属性获取相邻的节点。

12 13 14

需要注意:平行遍历发生在同一个父节点下的各节点间

15

小结

16

(三)搜索文档树

搜索文档树是通过指定标签名来搜索元素,还可以通过指定标签的属性值来精确定位某个节点元素,最常用的两个方法就是 find 和 find_all。

17 18
19

find 方法跟 find_all 类似,唯一不同的地方是,它返回的单个 Tag 对象而非列表,如果没找到匹配的节点则返回 None。如果匹配多个 Tag,只返回第0个。

注意:

find 和 find_all。这两个方法在 BeatifulSoup 和 Tag 对象上都可以被调用。

20 21

补充:获取标签里面内容

获取标签里面内容,除了可以使用 .string 之外,还可以使用 get_text 方法,不同的地方在于前者返回的一个 NavigableString 对象,后者返回的是 unicode 类型的字符串。实际场景中我们一般使用 get_text 方法获取标签中的内容。

22

参考资料:
1.Python爬虫知识点梳理
2.HTML文本解析库BeautifulSoup
3.Python网络爬虫与信息提取

上一篇下一篇

猜你喜欢

热点阅读