xpath语法

文章介绍了xpath在Python中的应用,主要通过lxml库将html转换为element对象,然后使用xpath表达式来选取元素、获取文本内容和属性。示例中展示了选取div、em、span以及获取href和alt属性的方法。
摘要由CSDN通过智能技术生成

xpath简单介绍

xpath在python中的应用

xpath——xml Path Language (xml是⼀门语言,传输跟存储数据)

网页源码——html⽂件,是标识性语言

虽然不能直接使用xpath语法,可以借助第三方库,充当二者之间的桥梁——lxml

将html网页转变element对象,可以执行xpath语法了

使用步骤:先安装pip install lxml -i 换源

xpath表达式

表达式

描述

//

从匹配选择的当前节点选择文档的节点,而不考虑他们的位置

/

从子节点选取,选择当前元素的下一级

@

选取属性

/text

当前元素的文本内容

[]、[@]

指定元素的索引或者属性特性

*

*表示所有

@*

所有属性

xpath语法具体用法

1.获取元素

//与/表达式用法

# 导入模块
from lxml import etree
# 模拟网页源代码
html ='''
               
                <div class="pic">
                    <em class="">1</em>
                    <a href="https://movie.douban.com/subject/1292052/">
                        <img width="100" alt="肖申克的救赎" src="https://img2.doubanio.com/view/photo/s_ratio_poster/public/p480747492.webp" class="">
                    </a>
                </div>
                    <div class="hd">
                        <a href="https://movie.douban.com/subject/1292052/" class="">
                            <span class="title">肖申克的救赎</span>
                                    <span class="title">&nbsp;/&nbsp;The Shawshank Redemption</span>
                                <span class="other">&nbsp;/&nbsp;月黑高飞(港)  /  刺激1995(台)</span>
                        </a>


                            <span class="playable">[可播放]</span>
                    </div>
'''
# 获取div标签
# xpath语法不能直接使用,实例化html读写
tree = etree.HTML(html)    #html——>网页代码,tree是指elements对象
div=tree.xpath('//div')
print(div)    #结果[<Element div at 0x1e09e1cca08>, <Element div at 0x1e09e47f808>]
'''
[<Element div at 0x1bc6d5b26c8>, <Element div at 0x1bc6d5b2508>]
1.返回数据类型为列表
2.只是获取到元素而已,并没有获取到div标签中的文本内容
3.//选择到的是所有div标签,不需要考虑标签的位置
4.取其中一个值可以通过下标取值,例如;print(div[0])
'''
# 获取em标签
em = tree.xpath('//em')
print(em)  #结果[<Element em at 0x1e09e47f8c8>]
# 无论在网页代码中有一个标签还是两个标签,最后返回都是列表,取值用下标取
# 获取这个span标签 <span class="title">肖申克的救赎</span>
span=tree.xpath('//a/img')
print(span)     #[<Element img at 0x1588abf1b88>]
# /表示一级一级的取,中间不能跨级

2.获取文本内容

/text用法

# 获取<em class="">1</em>中的文本内容
a = tree.xpath('//em/text()')[0]
print(a)

3.获取属性

@用法

from lxml import etree
html = '''

                <div class="pic">
                    <em class="">1</em>
                    <a href="https://movie.douban.com/subject/1292052/">
                        <img width="100" alt="肖申克的救赎" src="https://img2.doubanio.com/view/photo/s_ratio_poster/public/p480747492.webp" class="">
                    </a>
                </div>
       '''
tree = etree.HTML(html)
# 获取https://movie.douban.com/subject/1292052/
href = tree.xpath('//a/@href')[0]
print(href)
# 获取 肖申克的救赎
alt=tree.xpath('//img/@alt')[0]
print(alt)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值