XPath常用规则

XPath,全称是XML Path Language,即XML路径语言,是一门在XML文档中查找信息的语言。最初是用来搜寻XML文档的,但是它同样适用于HTML文档的搜索,所以完全可以使用XPath来做相应的信息抽取。

表达式 描述
nodename 选取此节点的所有子节点
/ 从当前节点选取直接子节点
// 从当前节点选取子孙节点
. 选取当前节点
选取当前节点的父节点
@ 选取属性

文本获取

我们可以使用XPath中的text()方法获取节点中的文本,用法如下:

from lxml import etree

html = etree.parse('./test.html', etree.HTMLParser())
result = html.xpath('//li[@class="item-0"]/text()')
print(result)

属性多值匹配

有时候,某个节点的某个属性可能有多个值,例如

text = '''<li class="li li-first"><a href="link.html">first item</a></li>'''

这里text中的li节点的class属性就有两个值li和li-first,此时如果还想用单纯的@属性就不可以了,需要用到contains()函数,如下:

from lxml import etree

html = etree.HTML(text)
result = html.xpath('//li[contains(@class,"li")]/a/text()')
print(result)

多属性匹配

我们还有可能遇到一种情况,那就是多个属性确定一个节点,这个时候就需要同时匹配多个属性,此时要用到运算符and来连接,如下:

from lxml import etree

text = '''<li class="li li-first" name="item"><a href="link.html">first item</a></li>'''
html = etree.HTML(text)
result = html.xpath('//li[contains(@class,"li") and @name="item"]/a/text()')
print(result)

おすすめ

転載: blog.csdn.net/weixin_45659364/article/details/118718967