目录
1、什么是XPath
2、安装配置
3、XPath常用规则
4、快速入门
5、浏览器XPath工具
1.什么是XPath
XPath
(XML Path Language
)是一种用于在XML文档中定位和选择节点的语言。
它是W3C
(World Wide Web Consortium
)定义的一种标准查询语言,广泛用于解析和操作XML文档。
2.安装配置
安装lxml
:
pip install lxml
使用lxml:
from lxml import etree
3.XPath常用规则
XPath使用路径表达式来描述节点的位置和关系。以下是XPath的一些常用规则:
语法 | 说明 |
---|---|
nodeName | 选取此节点的所有子节点 |
/ | 从当前节点选择直接子节点 |
// | 从当前节点选择子孙节点 |
. | 当前节点 |
.. | 选取当前节点的父节点 |
@ | 获取属性 |
高级用法说明:
-
选择特定节点类型:
-
node()
:匹配任何节点。 -
text()
:匹配文本节点。 -
element
:匹配元素节点。 -
@attribute
:匹配属性节点。
-
-
属性选择:
-
[@属性名]
:匹配具有特定属性的节点。 -
[@属性名=值]
:匹配属性值等于给定值的节点。
-
-
位置选择:
-
[位置]
:选择在指定位置的节点。 -
[last()]
:选择最后一个节点。 -
[position()<n]
:选择前 n 个位置的节点。
-
案例说明:
4.快速入门
在当前项目下创建一个index.html,如下:
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body><div class="aa">hello world</div><div class="bb">hello python</div></body>
</html>
完整代码示例如下:
p = pathlib.Path("index.html")
# 网页初始化
html = etree.HTML(p.read_text(encoding="utf-8")) # type: lxml.etree._Element
# 打印类型
# print(type(html))
# 获取指定节点
# print(html.xpath("body"))
# 获取当前节点
# print(html.xpath("."))
# 获取当前节点下的直接子节点
# print(html.xpath("./body"))
# 获取当前节点下的子孙节点
# print(html.xpath("//div"))
# 获取当前节点的父节点
# div = html.xpath("./body/div")[0] #type: lxml.etree._Element
# print(div.xpath(".."))
# 根据属性获取
# print(html.xpath("//div[@class='aa']"))
# 获取属性的值
# print(html.xpath("//div/@class"))
# 注意:元素顺序下标从1开始
# print(html.xpath("//div[1]/@class"))
# 获取文本信息
# print(html.xpath("//div[1]/text()"))
# print(html.xpath("//div[1]")[0].text)
5.浏览器XPath工具
打开Chrome浏览器,按F12打开开发者工具,找到console输入XPath语法指令查找网页内容。
参考地址:乐百川 - 简书
示例要求:通过浏览器的XPath工具搜索上述网页中的文章标题信息。
-
方式一:直接通过@class获取
$x("//div[@class='content ']/a/text()")
-
方式二:通过contains函数方式匹配@class属性的值
$x("//div[contains(@class,'content')]/a/text()")