text = '''
<div>
<ul>
<li class="item-0"><a href="link1.html">第一项</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>
</ul>
</div>
'''
from lxml import etree
html = etree.HTML(text)
# 将文本转为html格式
result = html.xpath('string(.)')
# 采集某个位置中的所有文本信息
result = html.xpath('//*')
# 选取所有节点
result = html.xpath('//li')
# 获取所有li节点
result = html.xpath('//li/a')
# 获取所有li节点的直接a子节点
result = html.xpath('//li//a')
# 获取所有li节点的所有a子孙节点
result = html.xpath('//a[@href="link.html"]/../@class')
# 获取所有href属性为link.html的a节点的父节点的class属性
result = html.xpath('//li[@class="ni"]')
# 获取所有class属性为ni的li节点
result = html.xpath('//li/text()')
# 获取所有li节点的文本
result = html.xpath('//li/a/@href')
# 获取所有li节点的a节点的href属性
result = html.xpath('//li[contains(@class,"li")]/a/text()')
# 当li的class属性有多个值时,需用contains函数完成匹配
result = html.xpath('//li[contains(@class,"li") and @name="item"]/a/text()')
# 多属性匹配
result = html.xpath('//li[1]/a/text()')
result = html.xpath('//li[last()]/a/text()')
result = html.xpath('//li[position()<3]/a/text()')
result = html.xpath('//li[last()-2]/a/text()')
# 按序选择,中括号内为XPath提供的函数
result = html.xpath('//li[1]/ancestor::*')
# 获取祖先节点
result = html.xpath('//li[1]/ancestor::div')
result = html.xpath('//li[1]/attribute::*')
# 获取属性值
result = html.xpath('//li[1]/child::a[@href="link1.html"]')
# 获取直接子节点
result = html.xpath('//li[1]/descendant::span')
# 获取所有子孙节点
result = html.xpath('//li[1]/following::*[2]')
# 获取当前节点之后的所有节点的第二个
result = html.xpath('//li[1]/following-sibling::*')
# 获取后续所有同级节点
lxml库
最新推荐文章于 2024-10-04 06:11:34 发布