XPath知识点

什么是XPath

XPath为XML路径语言,可以用于定位XML文本的节点,但实际上也适用于定位HTML中的节点。

在HTML中,节点就是一个个HTML标签。分析节点间的关系也就是要清除HTML文档中农各个标签的关系。

XPath路径表达式

使用路径表达式来选取XML或HTML的节点或节点集

路径表达式描述
/div从根节点开始选取div节点
//a选取文档中所有a节点,不考虑其位置
@class选取名为class的属性
.选取当前节点
选取父节点
/div/p从根节点开始选取div节点下的p节点
/div/p[2]/ul从根节点开始选取div节点下的的二个p节点下的ul节点
//div[@class=‘text’选取所有class属性名为text的div节点
//*选取文档中所有元素
//@*选取文档中所有带属性的元素

XPath函数

函数描述
/div/p/text()选取p节点的文本内容
//div[contains(@class, “post”)]选取带有class属性且宝行post的所有div节点
/div/p[last()-1]选取div下倒数第二个p节点
/div/|div/p选取div下的a节点 和 div下的p节点

Python lxml模块

lxml 是一种使用Python编写的库,可以迅速灵活地处理XML,lxml支持XPath。

安装lxml库

在cmd命令行中输入指令pip install lxml,安装lxml库。

实操例子

from lxml import etree

html_data = '''
<div>
    <ul>
        <li class="item-1"><a href="1.html"> item 1</a></li>
        <li class="item-2"><a href="2.html"> item 2</a></li>
        <li class="item-3"><a href="3.html"><span class="bold"> item 1</span></a></li>
        <li class="item-2"><a href="4.html"> item 4</a></li>
        <li class="item-1"><a href="5.html"> item 5</a></li>
    </ul>
</div>

'''

html = etree.HTML(html_data)
# print(etree.tostring(html).decode())

# 返回的是列表
# 获取所有li标签下所有a标签的文本内容
result = html.xpath("//li/a/text()")
print(result)
# [' item 1', ' item 2', ' item 4', ' item 5']

# 获取li标签下面所有的class属性
result = html.xpath("//li/@class")
print(result)
# ['item-1', 'item-2', 'item-3', 'item-2', 'item-1']

# 获取li标签 href值为1.html 的a标签的文本内容
result = html.xpath("//li/a[@href='1.html']/text()")
print(result)
# [' item 1']
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值