當前位置:
首頁 > 知識 > Python神技能:六張表 搞定 Xpath 語法

Python神技能:六張表 搞定 Xpath 語法


Linux編程

點擊右側關注,免費入門到精通!

作者丨j_hao104


https://my.oschina.net/jhao104/blog/639448



一、選取節點

常用的路勁表達式:








































表達式


描述


實例



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-sibling::*")


選取當前節點之後的兄弟節點


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節點



scrapy xpath文檔:


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

 推薦↓↓↓ 






??

16個技術公眾號

】都在這裡!


涵蓋:程序員大咖、源碼共讀、程序員共讀、數據結構與演算法、黑客技術和網路安全、大數據科技、編程前端、Java、Python、Web編程開發、Android、iOS開發、Linux、資料庫研發、幽默程序員等。

萬水千山總是情,點個 「

好看

」 行不行

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python開發 的精彩文章:

老婆最近不開心,發消息老撤回,我利用Python破解了撤回的消息!
不要總問我在幹嘛

TAG:Python開發 |