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()")