歡迎光臨
每天分享高質量文章

30個示例手把手教你學會Xpath高級用法

xpath速度比較快,是爬蟲在網頁定位中的較優選擇,但是很多網頁前端代碼混亂難以定位,而學習定位也較為不易(主要是全面的教程較少),這裡列出一點編程過程中可能有用的東西,歡迎共同學習批評指正。

試驗環境:Python環境,lxml.etree

  • 試驗所使用的html代碼

1、匹配某節點下的所有.//

//獲取文件中所有匹配的節點,.獲取當前節點,有的時候我們需要獲取當前節點下的所有節點,.//一定要結合.使用//,否則都會獲取整個文件的匹配結果.

2、匹配包含某屬性的所有的屬性值//@lang

3、選取若干路徑|

這個符號用於在一個xpath中寫多個運算式用,用|分開,每個運算式互不干擾

4、 Axes(軸)

  • child:選取當前節點的所有子元素

  • attribute:選取當前節點的所有屬性

  • ancestor:父輩元素 / ancestor-or-self:父輩元素及當前元素


  • descendant:後代 / descendant-or-self:後代及當前節點本身

使用方法同上

  • following :選取文件中當前節點的結束標簽之後的所有節點


  • namespace:選取當前節點的所有命名空間節點



  • parent:選取當前節點的父節點



  • preceding:選取文件中當前節點的開始標簽之前的所有節點


  • preceding-sibling:選取當前節點之前的所有同級節點


  • self:選取當前節點


  • 組合拳

5、position定位

6、條件

7、函式

  • count:統計

  • concat:字串連接


  • string:解析當前節點下的字符



  • local-name:解析節點名稱


  • contains(string1,string2):如果 string1 包含 string2,則傳回 true,否則傳回 false


  • not:布林值(否)


  • string-length:傳回指定字串的長度



  • 組合拳2


  • or:多條件匹配


  • 組合拳3:floor + div除法 + ceiling


  • 組合拳4隔行定位:position+mod取餘


  • starts-with:以。。開始

8、數值比較

  • div:對某兩個節點的屬性值做除法



  • 組合拳4:根據節點下的某一節點數量定位

9、將物件還原為字串

以上就是目前我整理出的全部內容,說明一點,xpath雖快,但是使用時儘量使用簡潔高效的方式,本文旨在定位那些較難的地方使用,刻意追求晦澀難懂的技巧會影響其效率,並不可取。

如有錯誤請評論指出,如有更強大好玩兒的也可以貼出來大家共同學習。
最後修改日期:2017/11/23

作者:whaike

來源:http://www.jianshu.com/p/1575db75670f


————廣告時間————


馬哥教育2018年Python自動化運維開發實戰面授班2018年3月5號開班,馬哥聯合BAT、豆瓣等一線互聯網Python開發達人,根據目前企業需求的Python開發人才進行了深度定製,加入了大量一線互聯網公司:大眾點評、餓了麽、騰訊等生產環境真是專案,課程由淺入深,從Python基礎到Python高級,讓你融匯貫通Python基礎理論,手把手教學讓你具備Python自動化開發需要的前端界面開發、Web框架、大監控系統、CMDB系統、認證堡壘機、自動化流程平臺六大實戰能力,讓你從0開始蛻變成Hold住年薪20萬的Python自動化開發人才

掃描二維碼領取學習資料

更多Python好文請點擊【閱讀原文】哦

↓↓↓

赞(0)

分享創造快樂