利用XPath選取HTML節點

目錄

  • 什麼是Xpath?
  • 常見的Xpath中節點及節點間的關係
  • Xpath路徑表達式(節選)

什麼是Xpath?

Xpath是XML-路徑語言的簡稱。顧名思義,Xpath可以用於定位XML文本的節點,但實際上,Xpath也適用於定位HTML中的節點。

節點及節點間的關係

在HTML中,節點就是一個個HTML標籤。分析節點間的關係也就是要清楚HTML文檔中各標籤間的關係。釐清這些關係對於書寫Xpath路徑表達式來說非常重要。

節點間的關係(下面通過一段HTML代碼說明:)

<div class="header-wrapper"> <a href="http://www.baidu.com"> <a href="http://blog.jobbole.com"><img src="xxx" alt="文章" /></a></div>

父節點(Parent)

元素div是元素a的父節點;第二個元素a也是元素img的父節點。

子節點(Children)

元素a是元素div的子節點;元素img是子節點。

兄弟/同胞節點(Sibling)

兄弟節點在HTML中的地位相等,它們有相同的父節點。如上面例子中,兩個a元素互為兄弟節點。

先輩節點(Descendant)

對於img元素來說,它的父節點(第二個a元素),和它的父節點的父節點(元素div)統稱為img的先輩節點。在一個HTML文件中,先輩節點一般不唯一,比如這裡的例子中,元素img的先輩節點包含兩個元素。

後代節點(Descendant)

對於img元素來說,它的子節點(第二個a元素),和它的子節點的子節點(元素img)統稱為div的後代節點。

在使用Xpath中,搞清楚節點間的關係是非常重要的。

Xpath路徑表達式(節選)

XPath 使用路徑表達式來選取 XML 文檔(或是HTML文檔)中的節點或節點集。下面列舉一些常見的路徑表達式。

再看稍微複雜的情況

  • 在節點後加上帶有數字的方括弧,可以根據兄弟節點在文檔中出現的先後次序選擇元素(數字1為第一個依次類推)。如果說我想取一個元素,而它從倒數來看更加方便,那該如何取呢?後面將說明這種方法。
  • 通過在節點後加上帶有屬性名-值對的方括弧,可以篩選出需要的節點。屬性值的寫法為:@屬性名=「屬性值」

選取位置元素和屬性

最後介紹Xpath中一些常用的函數

  • 適用路徑表達式時必須將其包圍在一對單引號(或雙引號)中。如果路徑表達式外是雙引號,則路徑表達式中的屬性值必須用單引號;如果路徑表示外是單引號,則路徑表達式中的屬性值必須用雙引號,以此來避免歧義。
  • contains函數在提取一個帶有多值屬性的節點時很有幫助

選取多個元素——在路徑表示中使用|

待續...


推薦閱讀:

谷歌瀏覽器直接提取的xpath,在python中為什麼無法提取相應內容?
爬蟲三步走(二)解析源碼
學爬蟲利器XPath,看這一篇就夠了
用xpath提取網頁上的元素,能否根據周圍的關鍵字來定位?

TAG:XPath | 爬蟲計算機網路 |