一文搞懂XPath 定位

简介: 一文搞懂XPath 定位

一文搞懂XPath 定位

XPath (XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历。

XPath定位在爬虫和自动化测试中都比较常用,通过使用路径表达式来选取 XML 文档中的节点或者节点集,熟练掌握XPath可以极大提高提取数据的效率。

因为XPath解析数据,是基于元素(Element)的树形结构,所以学习XPath前,先了解一下html的结构及常用标签。

img

基本标签

标题:`<h1>、<h2>、<h3>、<h4>、<h5>、<h6>、<title>`

段落:<p>

链接:<a>

图像:<img>

样式:<style>

列表:`无序列表<ul>、有序列表<ol>、列表项<li>`

块:`<div>、<span>`

脚本:<script>

注释:<!--注释-->

更多HTML学习可以参考W3School文档:https://www.w3school.com.cn/html/index.asp

XPath表达式学习

常用表达式

img

常用案例

img

谓语表达式

谓语用来查找某个特定的节点或者包含某个指定值的节点,被嵌在方括号中。

img

通配符

img

XPath常用的定位方式:

1.元素属性,快速定位,唯一属性: //*[@id="images"]

2.层级与属性结合,解决没有属性问题://div[@id="images"]/a[1]

3.属性与逻辑结合,解决多个属性重名问题:

//*[@id="su" and @class="bg s_btn" ]

注意,表达式里的下标是从1开始的。 绝对定位以/开头,依赖页面的元素的顺序和位置,相对定位以//开头,不依赖页面元素顺序和位置,根据条件进行匹配,优先使用相对定位。

学习XPath本质就是掌握各种表达式的技巧,除了上述说到方法外,还有一些特别的定位方式:

4.查找id属性的值包含"kw"的元素: //*[contains(@id,'kw')]

5.查找⽂本⾥包含"新闻"的元素: //*[contains(text(),'新闻')]

6.查找class属性中开始位置包含's_form_wrapper'关键字的元素:

//*[starts-with(@class,'s_form_wrapper')]

7.使⽤多个相对路径去定位⼀个元素⽤//分开:

//div[@class=‘formgroup’]//input[@id=‘user-message’]

8.轴定位:

轴定位,使用::表示

img

查找id="head"元素后⾯标签名为input的第一个元素

//*[@id="head"]//following::input[1]

img

目录
相关文章
|
7月前
|
算法
二分查找算法的细节刨析 --适合有基础的朋友阅读
二分查找算法的细节刨析 --适合有基础的朋友阅读
|
7月前
|
存储 Java C#
静态字段科普:从原理到代码实践
静态字段科普:从原理到代码实践
62 0
|
PHP 开发者
很多人觉得正则表达式中的【反向引用】这个概念很难, 其实特别简单 一个案例就明白了,没你想的那么高大上!
一个案例让你明白正则表达式中的【反向引用】,其实没有你想得那么难!
102 1
很多人觉得正则表达式中的【反向引用】这个概念很难, 其实特别简单 一个案例就明白了,没你想的那么高大上!
|
前端开发
第一个网页总结暨前端基础知识补充
一,css基本引入 二,字体引入样式 三,类名约定 四,文字相关 五,相关技巧 分竖线 六,案例遇到问题及解决方法 七,文本格式化标签 八,meta标签 九,表格 十,input表单 十 一,dl标签 十二,css相关补充 背景, 透明图像,opacity![](https://img-blog.csdnimg.cn/e6756a58e45c4b94aac154aeb76148c6.png) 在搜索框内添加图标 css3 边框-阴影,圆角 文本溢出显示,换行 css3 2D转换 transition过渡 Bootstrap4 颜色引用 Bootstrap4 进度条
91 0
第一个网页总结暨前端基础知识补充
|
存储 编译器 C语言
【C】函数真的难嘛?其实一点也不难,原理很简单。
# 什么是函数 程序是由多个零件组合而成的,而函数就是这种“零件”的一个较小单位。 ## main函数和库函数 C语言程序中,main函数是必不可少的。程序运行的时候,会执行main函数的主题部分。main函数中使用了printf、scanf、puts等函数。由C语言提供的这些为数众多的函数称为库函数。 ## 什么是函数 当然,我们也可以自己创建函数。而实际上,我们也必须亲自动手创建各种函数。下面我们来自己创建一个简单的函数。 创建一个函数,接收两个整数参数,返回较大整数的值。 printf函数和scanf函数等创建得比较好得函数,即使不知道其内容,只要了解使用方法,也可以轻松使用。 ## 函
|
Java 索引
力扣35搜索插入位置:思路分析+图文详解+代码实现+拓展java源码
力扣35搜索插入位置:思路分析+图文详解+代码实现+拓展java源码
137 0
|
测试技术 开发者
方法论:在不是太懂源码的情况下,我是怎么定位源码问题的?
方法论:在不是太懂源码的情况下,我是怎么定位源码问题的?
131 0
|
前端开发 IDE 开发工具
「趣学前端」提到布局,我第一个会想到的是flex
用技术实现梦想,用梦想打开创意之门。今天分享前端CSS中的flex布局知识点。
155 1
html+css实战151-定位-子绝父相
html+css实战151-定位-子绝父相
293 0
html+css实战151-定位-子绝父相