天天看點

常用的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()")           

繼續閱讀