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好文請點選【閱讀原文】哦
↓↓↓