1. 程式人生 > >Python爬蟲:Xpath語法筆記

Python爬蟲:Xpath語法筆記

上一個 div 運算符 tar 爬蟲 att 語法 ont tab

常用的路勁表達式:

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

二、謂語

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

實例:

表達式 結果
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節點

三、通配符

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

表達式 結果
xpath(’/div/*’) 選取div下的所有子節點
xpath(‘/div[@*]’) 選取所有帶屬性的div節點

四、取多個路徑

使用“|”運算符可以選取多個路徑

表達式 結果
xpath(‘//div|//table’) 選取所有的div和table節點

五、Xpath軸

軸可以定義相對於當前節點的節點集

軸名稱 表達式 描述
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-sibing::*’) 選取當前節點之後的兄弟節點
parent xpath(‘./parent::*’) 選取當前節點的父節點
preceding xpath(‘./preceding::*’) 選取文檔中當前節點開始標簽前的所有節點

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

六、功能函數

使用功能函數能夠更好的進行模糊搜索

函數 用法 解釋
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節點

Python爬蟲:Xpath語法筆記