xpath的基本使用,精准定位html中的元素

元素定位

基本语法

/ 从根节点开始选取 /html/div/span

// 从任意节点开始选取 //input

. 选取当前节点

.. 选取当前节点的父节点 //input/.. 会选取 input 的父节点

@ 选取属性或者根据属性选取 //input[@data] 选取具备 data 属性的 input 元素 //@data 选取所有 data 属性

* 通配符,表示任意节点或任意属性

标签名

寻找特定标签名的元素

复制代码
/div        从根节点获取div
//div       从任意节点获取div
/*          从根节点获取任意元素

属性名

寻找带有特定属性的元素,@符号代表要对属性值进行操作了

复制代码
//div[@class="c1"]        class为c1的div元素
//*[@class="c1"]          class为c1的任意元素

层级

寻找特定层级的元素

复制代码
//div[@class="c1"]/p        class为c1的div元素下的p元素
//*[@class="c1"]/span[@class="c2"]          class为c1的任意元素下的class为c2的span元素

次序

寻找指定排名的元素

复制代码
//div[@class="c1"]/p[1]        class为c1的div元素下的第一个p元素
//*[@class="c1"]/span[@class="c2"][2]          class为c1的任意元素下的第二个class为c2的span元素

元素筛选

逻辑表达式

|为逻辑或表达式,表示二者满足其一便可用于链接两个完整的xpath表达式,注意是完整的。

复制代码
//div[@class="c1"]/p[1]|//*[@class="c1"]/span[@class="c2"][2]

and,or,not是在方括号内用的

复制代码
//div[@class="c1" or @class="c2"]

判断语句

起始方括号内的语句就是判断语句

复制代码
/items/item[position() >= 2 and position() <= 5]        寻找/items/item,只匹配其中的第二到第五个

a[text()='Login']             可以匹配文本为"Login"的所有 <a> 元素。

函数的使用

text

获取节点中所有的字符组成字符串

html 复制代码
<book>  
    <title>Learning XPath</title>  
</book>

/book/title/text()

结果:
Learning XPath

concat()

concat() 函数用于将两个或多个字符串值连接成一个字符串。

html 复制代码
<book>  
    <title>Learning XPath</title>  
</book>

concat('The book title is: ', /book/title/text())

结果:The book title is: Learning XPath

substring()

substring() 函数用于从一个字符串中提取子字符串。

html 复制代码
<book>  
    <title>XPath for Dummies</title>  
</book>

substring(/book/title/text(), 1, 4)

contains()

html 复制代码
<book>  
    <title>XPath Fundamentals</title>  
</book>

contains(/book/title/text(), 'Path')

true

starts-with()

starts-with() 函数检查一个字符串是否以指定的前缀开始。

html 复制代码
<book>  
    <title>XPath Basics</title>  
</book>

starts-with(/book/title/text(), 'XPath')

true

number()

number() 函数将字符串转换为数字。

html 复制代码
<book>  
    <price>29.99</price>  
</book>

number(/book/price/text())

29.99

sum()

sum() 函数用于计算节点集中所有节点的数值之和。

html 复制代码
<books>  
    <book>  
        <price>19.99</price>  
    </book>  
    <book>  
        <price>24.99</price>  
    </book>  
</books>

sum(/books/book/price/text())

44.98

温馨提示

xpath在定位网页元素和获取内容时很有用,它的特性用在爬虫上非常好用,下一篇文章是在python的lxml库中使用xpath。

相关推荐
恋猫de小郭1 小时前
Flutter Zero 是什么?它的出现有什么意义?为什么你需要了解下?
android·前端·flutter
崔庆才丨静觅7 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60618 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了8 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅8 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅9 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
崔庆才丨静觅9 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment9 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅10 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端
剪刀石头布啊10 小时前
jwt介绍
前端