爬虫 2 XPath 和 pyquery
XPath
1.常用规则
表达式 | 描述 |
nodename | 选取此节点的所有子节点 |
/ | 从当前节点选取直接子节点 |
// | 从当前节点选取子孙节点 |
. | 选取当前节点 |
.. | 选取当前节点的父节点 |
@ | 选取属性 |
2.etree
python 3.5以上没有了整合的库,通过from lxml import etree 调用,pycharm会报错,但是功能还是能够实现
etree.HTML() 对html文本进行初始化
etree.tostring() 输出修正后的代码 (bytes类型)
etree.parse(文本名,etree.HTMLparser()) 读取文本解析
3.xpath
//* 选取所有节点
//ul/li 选取子节点或者子孙节点
//li[@class="item"] 属性匹配
//a/@href 获取属性
当遇到classname有多个值,可以使用contain()方法
XPath提供了100多个函数,具体可以参考:
http://www.w3school.com.cn/xpath/xpath_functions.asp
pyquery
1.调用方法
from pyquery impoPyQuery
1)PyQuery(str)字符串初始化
2)PyQuery(url = ‘’)URL初始化
与
PyQuery(requests,get(url).text)功能相同
3) PyQuery(filename = ‘’)文件初始化
2.基本 css选择器
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
from pyquery import PyQuery as pq doc = pq(html) print(doc('#container .list li')) 类型为PyQuery类型
查询函数和jQuery的用法相同
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
find() 查询节点的所有子孙节点 可传入css选择器筛选符合条件的节点 children() 查询子节点 可传入css选择器筛选符合条件的节点 parent() 查询父节点 可传入css选择器筛选符合条件的节点 parents() 查询祖先节点 可传入css选择器筛选符合条件的节点 siblings() 查询兄弟节点 可传入css选择器筛选符合条件的节点 items() 得到一个生成器,实现遍历 .attr.属性 获取属性 text() 获取文本,改变节点内部的内容 addClass() 添加指定class属性 removeClass() 删除指定class属性 attr() 修改属性等 html() 改变节点内部的内容 remove() 移除指定节点 pyquery强大的一点是它能支持伪类选择器 标签名:first-child 第一个节点 标签名:last-child 最后一个节点 标签名:ntn-child(2) 第二个节点 标签名:gt(2) 第三个节点之后的此标签节点 标签名:ntn-child(2n) 偶数位置的节点 标签名:contains(文本内容) 包含此文本内容的节点