python之XPath详解


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


文章作者: 古客
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 古客 !
评论
  目录