目录
1.XPath
1.1.什么是XPath
XPath
(XML Path Language
)是一种用于在XML文档中定位和选择节点的语言。它是W3C
(World Wide Web Consortium
)定义的一种标准查询语言,广泛用于解析和操作XML文档。
1.2.安装配置
安装
lxml
:pip install lxml
使用lxml:
from lxml import etree
1.3.XPath常用规则
XPath使用路径表达式来描述节点的位置和关系。以下是XPath的一些常用规则:
语法 | 说明 |
---|---|
nodeName | 选取此节点的所有子节点 |
/ | 从当前节点选择直接子节点 |
// | 从当前节点选择子孙节点 |
. | 当前节点 |
.. | 选取当前节点的父节点 |
@ | 获取属性 |
高级用法说明:
-
选择特定节点类型:
-
node()
:匹配任何节点。 -
text()
:匹配文本节点。 -
element
:匹配元素节点。 -
@attribute
:匹配属性节点。
-
-
属性选择:
-
[@属性名]
:匹配具有特定属性的节点。 -
[@属性名=值]
:匹配属性值等于给定值的节点。
-
-
位置选择:
-
[位置]
:选择在指定位置的节点。 -
[last()]
:选择最后一个节点。 -
[position()<n]
:选择前 n 个位置的节点。
-
案例说明:
1.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)
1.5.浏览器XPath工具
打开Chrome浏览器,按F12打开开发者工具,找到console输入XPath语法指令查找网页内容。
参考地址:乐百川 - 简书
示例要求:通过浏览器的XPath工具搜索上述网页中的文章标题信息。
-
方式一:直接通过@class获取
$x("//div[@class='content ']/a/text()")
-
方式二:通过contains函数方式匹配@class属性的值
$x("//div[contains(@class,'content')]/a/text()")
2.思维导图
----------------------------------------------------------------------------------------♥-------------------------------------------------------------------------------------
往期Python内容: