xpath定位

一、選取節點

常用的路勁表達式:

表達式描述實例?

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軸

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

軸名稱表達式描述

ancestorxpath('./ancestor::*')選取當前節點的所有先輩節點(父、祖父)

ancestor-or-selfxpath('./ancestor-or-self::*')選取當前節點的所有先輩節點以及節點本身

attributexpath('./attribute::*')選取當前節點的所有屬性

childxpath('./child::*')返回當前節點的所有子節點

descendantxpath('./descendant::*')返回當前節點的所有后代節點(子節點、孫節點)

followingxpath('./following::*')選取文檔中當前節點結束標簽后的所有節點

following-sibingxpath('./following-sibling::*')選取當前節點之后的兄弟節點

parentxpath('./parent::*')選取當前節點的父節點

precedingxpath('./preceding::*')選取文檔中當前節點開始標簽前的所有節點

preceding-siblingxpath('./preceding-sibling::*')選取當前節點之前的兄弟節點

selfxpath('./self::*')選取當前節點


六、功能函數????

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

函數用法解釋

starts-withxpath('//div[starts-with(@id,"ma")]')選取id值以ma開頭的div節點

containsxpath('//div[contains(@id,"ma")]')選取id值包含ma的div節點

andxpath('//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

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容