日拱一卒|数据挖掘015
阅读本文前建议先浏览:
本篇推送涉及的代码链接:https://github.com/piyixiaeco/daily-code/blob/master/Beautiful%20Soup.ipynb
二、使用BeautifulSoup
(二)遍历文档树
遍历文档树,即从根节点 html 标签开始遍历,直到找到目标元素为止,遍历的一个缺陷是,如果你要找的内容在文档的末尾,那么它要遍历整个文档才能找到它,速度上就慢了。因此还需要配合第二种方法:搜索文档树。
1以下面HTML文本为例
2
获取标签节点可以直接通过 .标签名
方式获得
1.下行遍历
3 4 5 62.上行遍历
遍历所有先辈节点,包括soup本身,所以要区别判断
3.平行遍历
遍历文档树的另一个缺点是只能获取到与之匹配的第一个子节点,例如,如果有两个相邻的 p 标签时,第二个标签就没法通过.p
的方式获取,这是需要借用 next_sibling 属性获取相邻的节点。
需要注意:平行遍历发生在同一个父节点下的各节点间
15小结
16(三)搜索文档树
搜索文档树是通过指定标签名来搜索元素,还可以通过指定标签的属性值来精确定位某个节点元素,最常用的两个方法就是 find 和 find_all。
17 1819
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网络爬虫与信息提取
网友评论