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