Xpath
Xpath是XML的路径语言,就是通过元素的路径来查找标签元素
借助工具
可以借助火狐浏览器的Firebug和Firepath插件来练习
Xpath定位方法
固定格式://*[@属性名='']
1.xpath支持id,class,name定位
通过id定位,如://*[@id='i1']
通过class定位,如://*[@class='inner']
通过name定位,如://*[@name='name']
2.xpath支持属性定位,当标签没有id,class,name三种属性时,就可以使用属性来定位
@代表以什么属性来定位,后面可以接标签中的任意属性,如://[@value='beijing']
3.xpath支持标签定位,当标签属性重复时,就可以通过标签来过滤
将*换成任意标签名,则可根据标签进行筛选,如://input[@placeholder='用户名']
4.xpath支持层级过滤
xpath可以通过/来进行层级递进,找到符合层级关系的标签,如://form/div/input[@id='inner']
当层级都重复时,可以通过单个层级的属性进行定位,如://form/div[@class='login_name']/input
5.xpath支持角标、索引定位,当一个元素的兄弟元素和它的标签一样,这是无法通过层级定位到,就可以使用角标来定位
通过索引,在list中定位属性,与python的索引不一样,xpath索引从1开始,如://select[@name='city'][1]/option[1]
6.xpath支持逻辑运算定位:and或or
通过and来缩小过滤的范围,只有条件都符合时才能定位到,如://select[@name='city' and @size='4']
通过or来过滤,只要有一个符合就匹配到了,如://select[@name='city' or @size='4']
7.xpath文本、模糊
3.1【文本定位】使用text()元素的text内容 如://button[text()="登录"]
3.2 【模糊定位】使用contains() 包含函数 如://button[contains(text(),"登录")]、//button[contains(@class,"btn")]
3.3 【模糊定位】使用starts-with -- 匹配以xx开头的属性值;ends-with -- 匹配以xx结尾的属性值 如://button[starts-with(@class,"btn")]、//input[ends-with(@class,"-special")]
8、xpath轴定位
8.1 轴运算
parent_elements = driver.find_elements_by_xpath('//a[@href="/toutiao/6841682.html"]//parent::div')
其能够获取当前节点的所有同级哥哥节点,后面可以加[1]来指定获取哪一个哥哥节点,注意括号里的标号1 代表着离当前节点最近的一个哥哥节点,数字越大表示离当前节点越远
older_elements = driver.find_elements_by_xpath('//a[@href="/toutiao/6841678.html"]//preceding-sibling::a')
element = driver.find_element_by_xpath('//a[@href="/toutiao/6841682.html"]//following-sibling::a[1]')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?