Xpath 用于提取数据
谓语被嵌在方括号内,用来查找某个特定的节点
| 表达式 | 结果 |
|---|---|
| @ | 选取标签中属性的内容 |
| xpath('/body/div[1]') | 选取body下的第一个div节点 |
| xpath('/body/div[last()]') | 选取body下最后一个div节点 |
| xpath('/body/div[last()-1]') | 选取body下倒数第二个节点 |
| xpath('/body/div[positon()<3]') | 选取body下前两个div节点 |
| xpath('/body/div[@class]') | 选取body下带有class属性的div节点 |
| xpath('/body/div[@class="main"]') | 选取body下class属性为main的div节点 |
| xpath('/body/div[price>35.00]') | 选取body下price元素大于35的div节点 |
from lxml import etree
text='''
<div>
<ul>
<li class="item-0"><a href="link1.html">first item</a></li>
<li class="item-1"><a href="link2.html">second item</a></li>
<li class="item-inactive"><a href="link3.html"><span class="bold">third item</span></a></li>
<li class="item-1"><a href="link4.html">fourth item</a></li>
<li class="item-0"><a href="link5.html">fifth item</a></li>
</ul>
</div>
'''
html = etree.parse('hello.html') # 读取文件
html2=etree.HTML(text)
print(html2.xpath('//li/@class'))
复制代码
获取
<li>标签下 href 为 link5.html 的<a>标签的内容
res=html.xpath('//li/a[@href="link5.html"]/text()')
print(res) # ['fifth item']
复制代码
获取
<li>标签下href的值
res=html.xpath('//li/a/@href')
print(res)
复制代码
['link1.html', 'link2.html', 'link3.html', 'link4.html', 'link5.html']
复制代码
获取倒数第二个元素的内容
res=html.xpath('//li[last()]/a/text()')
print(res)
复制代码
fourth item
复制代码




近期评论