1.介绍
XPath是一个路径选择语言,全称 XML Path Language,支持XML和HTML的选择,类似于正则表达式,但比正则表达式简单并且方便许多!
下表为XPath的符号解释:
表 达 式 | 描 述 |
---|---|
nodename | 选取此节点的所有子节点 |
/ | 从当前节点选取直接子节点 |
// | 从当前节点选取子孙节点 |
. | 选取当前节点 |
.. | 选取当前节点的父节点 |
@ | 选取属性 |
常用匹配规则:
//name[@Attr]
解释:name为节点名
Attr:在此节点名下的属性名
//title[@lang=’eng’]
这就是一个 XPath 规则,它代表选择所有名称为 title,同时属性 lang 的值为 eng 的节点。如果不是很懂没有关系,看完下面的例子你就懂了!
from lxml import etree
text = '''
<div>
<ul>
<li class="book-0"><a href="link.html">first item </a></li>
<li class="book-1"><a href="link.html">second item </a></li>
<li class="book-000"><a href="link.html">third item </a></li>
<li class="book-1"><a href="link.html">fourth item </a></li>
<li class="book-0"><a href="link.html">fifth item </a></li>
</ul>
</div>
'''
html = etree.HTML(text)
result = etree.tostring(html)
print(result.decode('utf-8')) #指定编码格式
代码解释:这里首先导入 lxml 库的 etree 模块,然后声明了一段 HTML 文本,调用 HTML 类进行初始化,这样就成功构造了一个 XPath 解析对象。这里需要注意的是,HTML 文本中的最后一个 li 节点是没有闭合的,但是 etree 模块可以自动修正 HTML 文本。
WmHiuF9UrA6A10N4Td4N8rVLGLD533XJ