lxml库

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::*')
# 获取后续所有同级节点

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值