这一系列文章是我在阅读“Python3网络爬虫开发实践”一书以及其他线上资料学习爬虫过程中的一些笔记和心得,希望能分享给大家。
第四章 解析库的使用
章节结构:
- XPath
- Beautiful Soup
- pyquery
具体内容:
- XPath, XML Path Language
XPath提供了简洁明了的路径选择表达式。内置函数可以用于字符串,数值,时间的匹配,以及节点序列的处理等。以下是常用的规则:
使用XPath通常通过引入etree模块,使用tostring方法解析一段HTML,他会自动补全HTML中的节点。etree.parse()方法传入本地文件,可以解析本地HTML文件。parse返回的对象可以通过.xpath('<XPath规则>')来获取某个节点。比如li,td等等。
除去获得节点,还可以通过@加上属性名,比如href来获得树形内容。我么还能通过运算符实现多个属性的匹配。列表如下:
- Beautiful Soup
Beautiful Soup是Python一个强大的HTML和XML解析库,它提供Python式的函数来处理导航搜索,修改分析树等功能。它通过把文档转换为Unicode编码,输出文档转换为UTF-8编码。它的解析依靠Python标准库中的解析器。
使用方法:通过传入变量和解析器类型创建BeautifulSoup实例,用实例的prettify方法获得标准缩进的格式输出,调用不同属性,显示对应的节点,比如bs_object.title.string可以输出HTML中title节点,bs_object.a.href可以输出链接url等等。如果是比较复杂的分析,可以运用BS的查询方法,比如find_all,find,find_parents,find_next_siblings等,通过传入参数,像是id,name,class等等进行搜索。
BS除去HTML的搜索方法,还提供CSS选择器select方法。通过传入li,td等节点名称或者css的class名字,id等进行搜索选择。
- pyquery
pyquery是一个css选择器强大的解析库。使用方法是导入PyQuery类,创建实例后传入变量,再通过类似pq_object("<node_name>"),比如li来进行选择。pyquery也有很多搜索方法,比如find,parent,children,parents,siblings等。pq_object支持遍历,调用items会得到生成器,逐个遍历节点。
另外,我们可以通过调用attr和text方法获取属性和内容信息。
pyquery除去选择器功能,还可以进行节点更改,比如addClass和removeClass,remove等
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。