一文搞懂XPath 定位

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

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

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

基本标签

标题:`

、`

段落:

链接:

图像:

样式:

列表:`无序列表

  • 、有序列表
  1. 、列表项
  2. `

    块:`

    、`

    脚本:

    注释:

    XPath表达式学习

    常用表达式

    常用案例

    谓语表达式

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

    通配符

    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.轴定位:

    轴定位,使用::表示

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

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

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

    1.使用Chrome浏览器的开发者工具,可以快速获取XPath表达式:

    点击选择光标,选择页面上的元素位置,在控制台右键选择Copy XPath,表达式就复制到粘贴板中了。

    获取到的XPath路径://*[@id="su"]

    获取full XPath:/html/body/div[1]/div[1]/div[5]/div/div/form/span[2]/input

    2.验证表达式:

    按键“Ctrl+F”,在控制台中输入需要检查的XPath路径,对应的元素会有的颜色标识。

pythonxpath定位_一文搞懂 XPath 定位相关推荐

  1. python语言语句快的标记是什么_一文搞懂Python程序语句

    原标题:一文搞懂Python程序语句 程序流 Python 程序中常用的基本数据类型,包括: 内置的数值数据类型 Tuple 容器类型 String 容器类型 List 容器类型 自然的顺序是从页面或 ...

  2. 摄像头图像分析目标物体大小位置_一文读懂图像定位及跟踪技术

    文 | 传感器技术 在科学技术日新月异的今天,人们对机器设备的智能性.自主性要求也越来越高,希望其完全替代人的角色,把人们从繁重.危险的工作任务中解脱出来,而能否像人一样具有感知周围环境的能力已成为设 ...

  3. rest api是什么_一文搞懂什么是RESTful API

    RESTful接口实战 首发公众号:bigsai 转载请附上本文链接 文章收藏在回车课堂 前言 在学习RESTful 风格接口之前,即使你不知道它是什么,但你肯定会好奇它能解决什么问题?有什么应用场景 ...

  4. python中row是什么意思_一文搞懂Python中的yield

    关注公众号「Python七号」,及时 get Python 技能. yield 可以实现生成器,可以实现协程. 什么是生成器,什么是协程,如果还不了解,可以继续往下看,概念可以不懂,只要理解它的作用和 ...

  5. l293d电机驱动原理_一文搞懂步进电机特性、原理及驱动器设计

    1.步进电机的概念 步进电机是将电脉冲信号,转变为角位移或线位移的开环控制电机,又称为脉冲电机.在非超载的情况下,电机的转速.停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响.当步进驱动 ...

  6. java吵醒线程_一文搞懂 Java 线程中断

    在之前的一文<如何"优雅"地终止一个线程>中详细说明了 stop 终止线程的坏处及如何优雅地终止线程,那么还有别的可以终止线程的方法吗?答案是肯定的,它就是我们今天要分 ...

  7. java8 lambda 视频_一文搞懂Java8 Lambda表达式(附带视频教程)

    Lambda表达式介绍 Java 8的一个大亮点是引入Lambda表达式,使用它设计的代码会更加简洁.通过Lambda表达式,可以替代我们以前经常写的匿名内部类来实现接口.Lambda表达式本质是一个 ...

  8. 中文只占一个字符_一文搞懂字符和字节的含义

    前言 我们在数据库建表时,经常会困扰某个字段应该选择什么数据类型,以及填写什么长度.选择数据类型方面一般没什么大问题,但是在填写对应的长度的时候,很多人就会困扰,对应长度填写的数字到底是什么含义,以及 ...

  9. java sleep方法_一文搞懂 Java 线程中断!

    在之前的一文<如何"优雅"地终止一个线程>详细说明了 stop 终止线程的坏处及如何优雅地终止线程,那么还有别的可以终止线程的方法吗?答案是肯定的,它就是我们今天要分享 ...

最新文章

  1. 使用BCH提供的客户端将消息绑定到任何位置
  2. 【网络安全】网络安全攻防 -- 黑客攻击简要流程
  3. 中国电信发布转型升级战略:构建一横四纵生态圈
  4. 现实世界的Windows Azure 视频:新南威尔士州教育部(DET)利用Windows Azure实现在线科学测验...
  5. 微信小程序:生命周期
  6. Git仓库迁移,包括所有的分支、标签、日志
  7. Spring+Quartz(一)
  8. 2016数博会日程安排表
  9. 【备忘录】word利用mathtype进行公式分章节编号和引用
  10. 同台加载_跨年官宣 | “爷青回”我只服湖南卫视跨年 李易峰陈伟霆马天宇“古剑三侠”同台...
  11. 智慧政务说明书 督察督办(八)
  12. 网络安全风险无处不在
  13. java程序设计课程培训心得体会_20165226 2017-2018-2《Java程序设计》课程总结
  14. Codeforces 1183E/H Subsequences dp
  15. 【创业邦·年度创业人物】刘强东:十年战争与千亿美金帝国梦
  16. 【MySQL高可用】MySQL高可用之MGR部署
  17. linux c语言修改文件的时间属性,请教一个关于用标准C语言修改文件创建时间、修改时间和访问时间的问题。...
  18. Windows Server 2008 R2 评估版到期 如何延长授权日期
  19. 91云服务器,GitHub - 91yun/91yuntest: 91云服务器一键测试包
  20. Linux中cron的用法,Linux中cron命令的用法详解

热门文章

  1. 如何制作和使用模板减少Origin绘图工作
  2. android拍照功能无预览,Android快速实现无预览拍照功能
  3. 抓包工具介绍、手机抓包、wireshark使用技巧
  4. MATLAB图库中的小女孩是谁,蚁人2中的小女孩是谁 在漫画中小女孩的身份又是什么...
  5. matlab点积、叉积、矩阵相乘的区别
  6. AQS 从后往前遍历寻找继任者
  7. 如何在多多客应用商店发布一个应用?
  8. Java 中利用Calendar类的方法判断当前年是闰年还是平年
  9. SpringCloud→SpringCloud搭建Zuul动态服务网关(五)
  10. HTML中如何将表格最外层边框设置成实线,内单元格边框设置成虚线?