XPath 定位怎么玩?一文搞懂它!

2022-10-1821:15:04云计算与物联网Comments1,319 views字数 1311阅读模式

XPath (XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

XPath定位在爬虫和自动化测试中都比较常用,通过使用路径表达式来选取 XML 文档中的节点或者节点集,熟练掌握XPath可以极大提高提取数据的效率。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

因为XPath解析数据,是基于元素(Element)的树形结构,所以学习XPath前,先了解一下html的结构及常用标签。
XPath 定位怎么玩?一文搞懂它!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

基本标签

标题:`<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文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

XPath表达式学习

常用表达式

XPath 定位怎么玩?一文搞懂它!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

常用案例

XPath 定位怎么玩?一文搞懂它!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

谓语表达式

谓语用来查找某个特定的节点或者包含某个指定值的节点,被嵌在方括号中。
XPath 定位怎么玩?一文搞懂它!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

通配符

XPath 定位怎么玩?一文搞懂它!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

XPath常用的定位方式:

1.元素属性,快速定位,唯一属性: //*[@id="images"]文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

2.层级与属性结合,解决没有属性问题://div[@id="images"]/a[1]文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

3.属性与逻辑结合,解决多个属性重名问题:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

//*[@id="su" and @class="bg s_btn" ]文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

注意,表达式里的下标是从1开始的。
绝对定位以/开头,依赖页面的元素的顺序和位置,相对定位以//开头,不依赖页面元素顺序和位置,根据条件进行匹配,优先使用相对定位。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

学习XPath本质就是掌握各种表达式的技巧,除了上述说到方法外,还有一些特别的定位方式:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

4.查找id属性的值包含"kw"的元素: //*[contains(@id,'kw')]文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

5.查找⽂本⾥包含"新闻"的元素: //*[contains(text(),'新闻')]文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

6.查找class属性中开始位置包含's_form_wrapper'关键字的元素:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

//*[starts-with(@class,'s_form_wrapper')]文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

7.使⽤多个相对路径去定位⼀个元素⽤//分开:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

//div[@class=‘formgroup’]//input[@id=‘user-message’]文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

8.轴定位:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

轴定位,使用::表示文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

XPath 定位怎么玩?一文搞懂它!查找id="head"元素后⾯标签名为input的第一个元素//*[@id="head"]//following::input[1]
XPath 定位怎么玩?一文搞懂它!文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

如何在浏览器中查找和验证XPath?

1.使用Chrome浏览器的开发者工具,可以快速获取XPath表达式:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

点击选择光标,选择页面上的元素位置,在控制台右键选择Copy XPath,表达式就复制到粘贴板中了。
XPath 定位怎么玩?一文搞懂它!获取到的XPath路径://*[@id="su"]文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

获取full XPath:/html/body/div[1]/div[1]/div[5]/div/div/form/span[2]/input文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

2.验证表达式:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html

按键“Ctrl+F”,在控制台中输入需要检查的XPath路径,对应的元素会有的颜色标识。
XPath 定位怎么玩?一文搞懂它!

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/yunda/28382.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/yunda/28382.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定