python解析库lxml模块怎么用_python解析库lxml的讲解和案例应用

fromlxmlimporthtml

fromlxmlimportetree

importrequests

fromlxml.etreeimportHTMLParser

text='''

'''

html=etree.HTML(text,etree.HTMLParser())

print(type(html))

result=html.xpath('//*')#获取所有节点

result=html.xpath('//li')#获取所有li节点

print(result)

resutl=html.xpath('//a')#获取所有a节点

print(result)

result=html.xpath('//li/a')#选择li节点下的a节点

print(resutl)

result=html.xpath('//a[@href]/../@class')#['item-0', 'item-1']

print(result)

result=html.xpath('//a[@href="link1.html"]/../@class')#['item-0']

print(result)

#..可以用parent::*替换

result=html.xpath('//a[@href="link1.html"]/parent::*/@class')#['item-0']

print(result)

result=html.xpath('//li[@class]')

print(result)

#获取特定属性的标签

result=html.xpath('//li[@class="item-0"]')

print(result)

#获取文本内容

#

第一个

result=html.xpath('//a[@href]/text()')

print(result)

result=html.xpath('//a[@href="link1.html"]/text()')

print(result)

result=html.xpath('//li[@class="item-0"]//text()')#代表所有子孙节点中li节点的子孙节点内容

print(result)

#获取某个节点的属性

print("-"*30)

resutl=html.xpath('//a/@href')

print(result)

resutl=html.xpath('//li/a/@href')

print(result)

resutl=html.xpath('//li//@href')

print(result)

text=text1='''

'''

html=etree.HTML(text,etree.HTMLParser())

#能不能模糊查询,然后精确定位

result=html.xpath('//li[@class = "aaa"]/a/text()')

print(result)#空列表

#用contains(@attr,value)可以使实现精确定位

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

print(result)

result=html.xpath('//li/a[contains(@href, "link2")]/text()')

print(result)

#同上

result=html.xpath('//a[contains(@href, "link2")]/text()')

print(result)

text1='''

'''

#匹配多个属性定位一个节点 and

html=etree.HTML(text1,etree.HTMLParser())

result=html.xpath('//li[@class = "aaa" and @name = "item"]/a/text()')

print(result)

html=etree.HTML(text1,etree.HTMLParser())

#[]中可以用一个contains 也可以用and连接多个contains,contains里面要以(@atrr,value)形式

result=html.xpath('//li[contains(@class,"aa") and contains(@name,"ite")]/a/text()')

print(result)

#还可以这样写

result=html.xpath('//li[contains(@class,"aaa") and @name = "item"]/a/text()')

print(result)

#当匹配到的标签全部一样时,只有string内容不一样,只想要最后一个一个或者中间某个,这时候需要索引

text1='''

'''

html=etree.HTML(text1,etree.HTMLParser())

#获取第一个

result=html.xpath('//li[1][contains(@class,"aaa")]/a/text()')

print(result)

#获取第二个

result=html.xpath('//li[2][contains(@class,"aaa")]/a/text()')

print(result)

#获取倒数第一个

result=html.xpath('//li[last()][contains(@class,"aaa")]/a/text()')

print(result)

#获取倒数第2个

result=html.xpath('//li[last()-1][contains(@class,"aaa")]/a/text()')

print(result)

#获取第二个和第三个

result=html.xpath('//li[position() > 1 and position() < 4][contains(@class,"aaa")]/a/text()')

print(result)

#获取当前节点的所有祖先节点

result=html.xpath('//li[1]/a/ancestor::*')

print(result)

#获取祖先节点div

result=html.xpath('//li[1]/a/ancestor::div')

print(result)

#获取当前节点的所有属性值

result=html.xpath('//li[1]/a/attribute::*')

print(result)

result=html.xpath('//li[1]/attribute::*')

print(result)

#获取当前节点的所有直接子节点

result=html.xpath('//li[1]/child::*')

print(result)

#获取当前节点的同级节点

result=html.xpath('//li[1]/following-sibling::*')

print(result)

#获取当前节点的之后的所有节点,是同级剩下的节点和子节点,而不是在内部找之后的节点

result=html.xpath('//li[1]/following::*')

print(result)

#获取所有子孙节点中的a节点

result=html.xpath('//li[1]/descendant::a')

print(result)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值