常用的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()")
目录
相关文章
|
6月前
|
编译器 C++
C++系列七:表达式
C++系列七:表达式
|
存储 Java
什么是语句?什么是表达式?
什么是语句?什么是表达式?
|
4月前
|
Java 测试技术
day9:运算符、表达式和语句
【7月更文挑战第9天】🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
39 6
|
6月前
Q表达式
Q表达式。
55 5
|
6月前
|
SQL 数据库 Python
F表达式
F表达式。
44 4
|
6月前
|
安全 C++ 开发者
c++表达式详细介绍
前言 表达式是 C++ 语言的基石之一,它们在程序中执行计算、赋值、逻辑判断和更多操作。本文旨在提供对 C++ 表达式各个方面的全面了解,包括基础概念、类型、求值规则以及高级主题。
146 0
|
编译器
【C++Primer】第4章:表达式
【C++Primer】第4章:表达式
121 0
【C++Primer】第4章:表达式
|
编译器 C++
表达式和语句
表达式和语句
157 0
|
Serverless vr&ar 容器
F#表达式求值
重点介绍如何用F#求表达式 ( a + x ) * b 的值
907 0
F#表达式求值