Python基础----xpath

xpath的基本用法

//元素标签名    例如://div 功能是查找网页内的所有div
//元素标签名[@属性名=’具体内容‘]   例如://div[@class='box'] 功能是查找存在属性@class='box'的div
//元素标签名[第几个]     例如://div[@class="box"][2] 查找符合条件的第二个div
//元素1/元素2/元素3...   例如://ul/li/div/a/img  查找ul下的li下的div下的a下的img标签
//元素1/@属性名          例如://ul/li/div/a/img/@src  查找ul下的li下的div下的a下的img标签的src属性
//元素/text()   例如://a/text() 获取a标签下的文本(一级文本)
//元素//text()  例如://div[@class='box']//text() 获取class=‘box’的div下的所有文本
//元素[contains(@属性名,'相关属性值')]   例如://li[contains(@class,'zhangsan')]  查找class中包含zhangsan的div
//*[@属性='值']  例如://*[@name='lisi'] 查找name为lisi的元素

from  lxml import etree

html_str = """
<a href='https://www.baidu.com'>
        百度一下,你就知道
</a>
"""
# 将字符串转化成标签
# 该方法会检测字符串内容是否为标签样式,但是不能检测出内容是否为真的标签
result = etree.fromstring(html_str)
print(result)

# parse 解析
html = etree.HTML('index.html')
print(type(html))
print(html)

# 找到网页内所有的a标签
a = html.xpath('//a')
print(a)
# 根据标签属性找到指定的标签
# 获取指定标签的内容
result = html.xpath('//a/@class')
print(result)
result = html.xpath('//a/@id')
print(result)
#找到所有标签的超链接属性
result = html.xpath('//a/@href')
print(result)
# 找到指定的文本内容------------------

result = html.xpath('//a/text()')
print(result)
# 如果找某一个标签的文本,而这个标签下面还有其他的标签 那么只找这个标签的文本 子标签的文本不找
result = html.xpath('//div/text()')
print(result)
# //text()找到本标签以及所有子标签的文本
result = html.xpath('//div//text()')
print(result)
for name in result:
    print(name)
#获取指定id名字的标签的文本
result = html.xpath('//ul//lia[@id="jd"]/text()')
print(result[0])
# last()获取最后一个标签
result = html.xpath('//ul/li[last()]')[0]
print(result)
# 获取拥有指定类名的标签的文本
result = html.xpath('//a[@class="shopping"]/text()')
print(result)

# contains 包含指定属性
result = html.xpath('//div[@class="now"]/p[contains(@class,"third")]/text()')
print(result)
# 找到所有的ul
# 找到所有ul中的所有a标签
# 获取a标签文本和所有a标签的子标签的文本
result = html.xpath('//ul//a//text()')
print(result)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值