当前位置: 首页 > article >正文

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

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

<book>  
    <title>Learning XPath</title>  
</book>

/book/title/text()

结果:
Learning XPath

concat()

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

<book>  
    <title>Learning XPath</title>  
</book>

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

结果:The book title is: Learning XPath

substring()

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

<book>  
    <title>XPath for Dummies</title>  
</book>

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

contains()

<book>  
    <title>XPath Fundamentals</title>  
</book>

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

true

starts-with()

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

<book>  
    <title>XPath Basics</title>  
</book>

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

true

number()

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

<book>  
    <price>29.99</price>  
</book>

number(/book/price/text())

29.99

sum()

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

<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。


http://www.kler.cn/a/320057.html

相关文章:

  • PT8M2302 触控 A/D 型 8-Bit MCU
  • IEC103 转 ModbusTCP 网关
  • AWS云计算概览(自用留存)
  • centos 8 中安装Docker
  • 【汇编】汇编编程中的指令传参方式
  • 【gin】http方法了解,以及RESTful API与版本控制
  • Nginx基础详解2(首页解析过程、进程模型、处理Web请求机制、nginx.conf语法结构)
  • PCL 用八叉树完成空间变化检测
  • 【Android】页面启动耗时统计流程梳理
  • 操作系统知识4
  • Pr 入门系列之五:编辑 - 进阶篇(上)
  • ISP基本框架及算法介绍 ISP(Image Signal Processor)
  • css-functions伪类选择器系列一
  • SparkSQL-初识
  • 腾讯云平台实现本机远程连接和数据库mysql 8连接
  • 二十、微服务(基本概念与SOA的区别)
  • 安卓13删除下拉栏中的关机按钮版本2 android13删除下拉栏关机按钮
  • 决策树算法在机器学习中的应用
  • 【C语言】自定义类型——结构体
  • 腾讯云服务器配置免密登录
  • 问题记录:end value has mixed support, consider using flex-end instead
  • windows 驱动实例分析系列-COM驱动的I/O处理
  • C语言中的一些小知识(三)
  • uni-app vue3封装websocket,支持微信小程序
  • 《AI设计类工具系列之一——FigJam AI》
  • 深入理解及如何使用main函数参数