Python个人学习笔记 XPath语法与lxml.etree模块
lxml.etree
解析HTML代码
XPath
常用语法
常用用法示例
运算符

解析HTML代码
⑴ 解析本地文件 parse()
⑵ 解析字符串HTML代码 HTML()
其实用response.html可以直接获取非字符串类型的HTML代码,没必要再用etree.HTML()解析一遍。
区别就是匹配节点后输出的方式不同。response.html会显示标签中属性和属性值,etree.HTML()解析的代码只显示标签名。

XPath
XPath可用于爬虫中匹配标签对。
常用语法
示例可参考 requests库 requests_html库——简单数据爬取。
常用用法示例
⑴ 获取所有节点 //*
⑵ 获取父节点 ..
多个节点的父节点相同时,不会重复返回父节点。
获取<body>下<div>标签的父节点。一共会匹配到5个<div>,只会返回1个<body>。

⑶ 获取文本 /text() / 获取属性值 @
① 获取所有<td class="..." colspan="..." style="...">下<a>的文本。

② 获取所有<td class="..." colspan="..." style="...">下<a>的title的属性值。
⑷ 模糊匹配文本 contains()

① 匹配属性值
② 匹配文本
⑸ 指定索引
在之前的例子中获取东方作品名中,一共有4个表格:旧作、整数作、小数点作、黄昏作。
用索引 [2] 指定第二个表格(新作),再获取作品名。
last():返回最后一个索引值。
position():返回当前索引值。
用 [last()-2]、[position()=2] 同样可以获取第二个表格。
▲索引从1开始。
⑹ 指定轴(节点关系) ::
示例参考 requests库 requests_html库——简单数据爬取。
运算符
示例:
获取<head>和<table>标签。

