Xpath 基礎用法

表達式 描述
nodename 選取此節點的所有子節點。
/ 從根節點選曲。
// 從匹配選擇的當前結果選擇文檔中的節點,而不考慮它們的位置。
. 選取當前節點。
.. 選取當前節點的父節點。
@ 選取屬性。

例子

路徑表達式 結果
bookstore 選取bookstore 元素的所有子節點。
/bookstore 選取根元素bookstore。註釋:假如路徑起始於正斜杠( / ),則此路徑始終代表到某元素的絕對路徑!
bookstore/book 選取屬於bookstore 的子元素的所有book 元素。
//book 選取所有book 子元素,而不管它們在文檔中的位置。
bookstore//book 選擇屬於bookstore 元素的後代的所有book 元素,而不管它們位於bookstore 之下的什麼位置。
//@lang 選取名為lang 的所有屬性。

節點描述

節點描述為一個邏輯真假表達式,任何真假判斷表達式都可在節點後方括號里表示,這條件必須在XPath處理這個節點前先被滿足。在某一步驟可有多少個描述並沒有限制。

範例如下:

這將檢查元素a有沒有href屬性,並且該它的值是help.php。

複雜一些的範例如下:
```//a[@href='help.php'][../div/@class='header']/@target

//a[@href='help.php'][name(..)='div'][../@class='header']/@target

此例將會選擇符合條件的元素a的target屬性。 要求元素a: 具有屬性href且值為help.php; 並且元素a具有父元素div; 並且父元素(div)其自身具備class屬性,值為header。

找出所有連結的網址(a的href屬性)

//a/@href

找出所有連結的文字

//a/text()

找出div屬性id='txt'的物件

//div[@id='txt']

找出td屬性class包含'GridItem'字串的物件

//td[contains(@class, 'GridItem')]
  • class有多個value:class="GridItem td1
  • 相似value的比對:同時抓取 class="GridItem1" class="GridItem2"...

找出font屬性color='#0000ff'或是屬性color='blue的'物件

//font[(@color="#0000ff" or @color="blue")]

找出font屬性color='#0000ff'或是span屬性style="COLOR: blue"的物件

//font[@color="#0000ff"] | //span[@style="COLOR: blue"]

由以上的例子 可以看出

Xpath 大概由這些組成

//textarea[contains(@title,"Description")]

// 選取符合的節點 接著是你HTML 的TAG [] 中間就是你的邏輯判斷式

https://zh.wikipedia.org/wiki/XPath http://cuiqingcai.com/2621.html http://tech-marsw.logdown.com/blog/2016/01/11/parsing-lxml-xpath-sheet

CSS Selector

http://ddavison.io/css/2014/02/18/effective-css-selectors.html

results matching ""

    No results matching ""