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破解了撤回的消息!
※不要總問我在幹嘛
TAG:Python開發 |