Python爬蟲:Xpath語法筆記

1、選取節點

經常使用的路勁表達式:html

 

表達式 描述 實例  
nodename 選取nodename節點的全部子節點 xpath('//div') 選取了div節點的全部子節點
/ 從根節點選取 xpath('/div') 從根節點上選取div節點
// 選取全部的當前節點,不考慮他們的位置 xpath('//div') 選取全部的div節點
. 選取當前節點 xpath('./div') 選取當前節點下的div節點
.. 選取當前節點的父節點 xpath('..') 回到上一個節點
@ 選取屬性 xpath('//@calss') 選取全部的class屬性

 

2、謂語

謂語被嵌在方括號內,用來查找某個特定的節點或包含某個制定的值的節點node

實例:scrapy

 

表達式 結果
xpath('/body/div[1]') 選取body下的第一個div節點
xpath('/body/div[last()]') 選取body下最後一個div節點
xpath('/body/div[last()-1]') 選取body下倒數第二個div節點
xpath('/body/div[positon()<3]') 選取body下前兩個div節點
xpath('/body/div[@class]') 選取body下帶有class屬性的div節點
xpath('/body/div[@class="main"]') 選取body下class屬性爲main的div節點
xpath('/body/div[price>35.00]') 選取body下price元素值大於35的div節點

 

3、通配符

Xpath經過通配符來選取未知的XML元素函數

 

表達式 結果
xpath('/div/*') 選取div下的全部子節點
xpath('/div[@*]') 選取全部帶屬性的div節點

 

4、取多個路徑

使用「|」運算符能夠選取多個路徑spa

 

表達式 結果
xpath('//div|//table') 選取全部的div和table節點

 

5、Xpath軸

軸能夠定義相對於當前節點的節點集.net

軸名稱 表達式 描述
ancestor xpath('./ancestor::*') 選取當前節點的全部先輩節點(父、祖父)
ancestor-or-self xpath('./ancestor-or-self::*') 選取當前節點的全部先輩節點以及節點自己
attribute xpath('./attribute::*') 選取當前節點的全部屬性
child xpath('./child::*') 返回當前節點的全部子節點
descendant xpath('./descendant::*') 返回當前節點的全部後代節點(子節點、孫節點)
following xpath('./following::*') 選取文檔中當前節點結束標籤後的全部節點
following-sibing xpath('./following-sibling::*') 選取當前節點以後的兄弟節點
parent xpath('./parent::*') 選取當前節點的父節點
preceding xpath('./preceding::*') 選取文檔中當前節點開始標籤前的全部節點

 

preceding-sibling xpath('./preceding-sibling::*') 選取當前節點以前的兄弟節點
self xpath('./self::*') 選取當前節點

 

6、功能函數    

使用功能函數可以更好的進行模糊搜索htm

 

函數 用法 解釋
starts-with xpath('//div[starts-with(@id,"ma")]') 選取id值以ma開頭的div節點
contains xpath('//div[contains(@id,"ma")]') 選取id值包含ma的div節點
and xpath('//div[contains(@id,"ma") and contains(@id,"in")]') 選取id值包含ma和in的div節點
text() xpath('//div[contains(text(),"ma")]') 選取節點文本包含ma的div節點
     

 

scrapy xpath文檔:http://doc.scrapy.org/en/0.14/topics/selectors.html 文檔

相關文章
相關標籤/搜索