常用的xpath表达式

简介: 常用的xpath表达式

Xpath表达式

    /
    代表从顶端开始寻找标签一层层寻找
    例子:/html/head/title
    text()
    提取文本信息
    例子:/html/head/titile/text()
    @[]
    提取属性
    例子://li[@class=””]/a/@href       标签[@属性=值]
    //
    寻找所有标签
    例子://li
    / /*
    例子/div/* 选取属于div元素的所有子节点
    //*
    例子//* 选取所有元素
    //div[@*]
    选取所有带属性的title元素
    /div/a|//div/p
    选取所有div元素的a和p元素
    //span|//ul
    选取文档中的span和ul元素
    Article/div/p|//span
    选取所有属于article元素的div元素的p元素以及文档中所有的span元素
    Contains()
    当有多个class属性时使用contains函数获取
    例子//span[contains(@class,’vote-post-up’)]
    
    
    Re
    re.compile(".*?(\d{4}[年/-]\d{1,2}([月/-]$|[月/-]\d{1,2}|[月/-]\d{1,2}日|$))").findall(str(data))
    日期
    [\u4E00-\u9FA5]+ 
    中文
    starts-with
     匹配一个属性开始位置的关键字
    Contains
    driver.findElement(By.xpath(“//a[contains(text(), ’退出’)]));
     匹配一个属性值中包含的字符串
    text()
     匹配的是显示文本信息,此处也可以用来做定位用
     获取当前标签下的所有文字包括子标签
    test= comment.xpath(".//span[@class='ctt']")
    result = test[0].xpath('string(.)').strip()
    following-sibling::td[1]  选择兄弟节点
    //选择不包含class属性的节点
    var result = node.SelectNodes(".//span[not(@class)]");
    //选择不包含class和id属性的节点
    var result = node.SelectNodes(".//span[not(@class) and not(@id)]");
    //选择不包含class="expire"的span
    var result = node.SelectNodes(".//span[not(contains(@class,'expire'))]");
    //选择包含class="expire"的span
    var result = node.SelectNodes(".//span[contains(@class,'expire')]");
    //解析出带标签的当前元素
    etree.tostring()

    <div>
        <a id="1" href="www.baidu.com">我是第1个a标签</a>
        <p>我是p标签</p>
        <a id="2" href="www.baidu.com">我是第2个a标签</a>
        <a id="3" href="www.baidu.com">我是第3个a标签</a>
        <a id="4" href="www.baidu.com">我是第4个a标签</a>
        <p>我是p标签</p>
        <a id="5" href="www.baidu.com">我是第5个a标签</a>
    </div>
    获取第三个a标签的下一个a标签:"//a[@id='3']/following-sibling::a[1]"
    获取第三个a标签后面的第N个标签:"//a[@id='3']/following-sibling::*[N]"
    获取第三个a标签的上一个a标签:"//a[@id='3']/preceding-sibling::a[1]"
    获取第三个a标签的前面的第N个标签:"//a[@id='3']/preceding-sibling::*[N]"
    获取第三个a标签的父标签:"//a[@id=='3']/.."
    判断是否包含文字 root.xpath("//div[@id='sublist_div']/span[contains(text(),'简') and contains(text(),'日')]/text()")
目录
相关文章
|
定位技术
百度地图缩放级别与比例尺的关系
百度地图缩放级别与比例尺的关系
1152 0
|
12月前
配置MAC地址表
配置MAC地址表
144 2
配置MAC地址表
|
7月前
|
虚拟化 网络虚拟化 Windows
导入虚拟机到Hyper-V环境时,理解并配置网络适配器设置是确保网络通信的关键
在Hyper-V环境中,正确配置虚拟机的网络适配器是确保其网络通信的关键。需先启用Hyper-V功能并创建虚拟交换机。接着,在Hyper-V管理器中选择目标虚拟机,添加或配置网络适配器,选择合适的虚拟交换机(外部、内部或私有),并根据需求配置VLAN、MAC地址等选项。最后,启动虚拟机并验证网络连接,确保其能正常访问外部网络、与主机及其他虚拟机通信。常见问题包括无法访问外部网络或获取IP地址,需检查虚拟交换机和适配器设置。
|
人工智能 搜索推荐 机器人
ai教育
【8月更文挑战第4天】ai教育
667 0
|
12月前
|
SQL 监控 数据库
SQL语句性能分析技巧与方法
在数据库管理中,分析SQL语句的性能是优化数据库查询、提升系统响应速度的重要步骤
|
自然语言处理 搜索推荐 机器人
自然语言处理(NLP)技术的应用场景深度解析
【7月更文挑战第28天】自然语言处理(NLP)技术以其广泛的应用场景和卓越的性能在人工智能领域占据重要地位。从搜索引擎优化到机器翻译,从情感分析到聊天机器人,NLP技术正在不断地改变着我们的工作和生活方式。随着技术的不断进步和应用领域的不断拓展,我们有理由相信NLP将在未来的人工智能领域中发挥更加重要的作用,为人类社会带来更多的便利和创新。
1014 1
|
SQL Java 关系型数据库
JDBC技术【JDBC概述、获取数据库连接、 下载数据库驱动】(一)-全面详解(学习总结---从入门到深化)
JDBC技术【JDBC概述、获取数据库连接、 下载数据库驱动】(一)-全面详解(学习总结---从入门到深化)
618 0
JDBC技术【JDBC概述、获取数据库连接、 下载数据库驱动】(一)-全面详解(学习总结---从入门到深化)
|
人工智能 运维 监控
在日常开发工作中,日志数据该如何利用?
在日常开发工作中,日志数据是一个宝贵的资源,它可以提供关于应用程序运行状态、错误报告、性能指标和用户行为等方面的重要信息。正确地利用和分析日志数据可以帮助开发人员更好地理解应用程序的运行情况,快速定位和解决问题,改进应用程序的性能,并为业务决策提供有力支持。尤其是在现代科技发展的背景下,日志数据作为一种重要的信息资源,对于运维工作具有极大的价值。然而,如何充分利用日志数据,并将其应用于运维和开发工作中,仍然是许多企业和运维和开发人员关注的问题。那么本文就来分享一下在日常开发中关于日志数据的利用方面的探讨。
485 1
在日常开发工作中,日志数据该如何利用?
|
负载均衡 Java Spring
深入理解Ribbon负载均衡
深入理解Ribbon负载均衡
620 0
|
IDE 开发工具 Python
解决pycharm代码中非错误波浪线问题
解决pycharm代码中非错误波浪线问题
392 0
解决pycharm代码中非错误波浪线问题