Python中Scrapy框架元素選擇器XPath的簡單實例


原文標題:《Python網絡爬蟲—Scrapy的選擇器Xpath》 對原文有所修改和演繹

優勢

XPath相較於CSS選擇器,可以更方便的選取

  • 沒有id class name屬性的標簽
  • 屬性或文本特征不顯著的標簽
  • 嵌套層次極其復雜的標簽

XPath路徑

定位方式

/ 絕對路徑 表示從根節點開始選取
// 相對路徑 表示從任意節點開始

基本的節點定位

#查找html下的body下的form下的所有input節點
/html/body/form/input

#查找所有input節點
//input

使用通配符*定位

#查找form節點下的所有節點
//form/*#查找所有節點//*

#查找所有input節點(input至少有爺爺輩親戚節點)
//*/input

使用索引定位

#定位 第8個td下的 第2個a節點
//*/td[7]/a[1]

#定位 第8個td下的 第3個span節點
//*/td[7]/span[2]

#定位 最后一個td下的  最后一個a節點
//*/td[last()]/a[last()]

使用屬性

#定位所有包含name屬性的input節點
//input[@name]

#定位含有屬性的所有的input節點
//input[@*]

#定位所有value=2的input節點
//input[@value='2']

#使用多個屬性定位
//input[@value='2'][@id='3']
//input[@value='2' and @id='3']

使用函數定位

函數 含義
contains(,) 前者中包含后者
text() 獲取節點中的字符串
starts-with() 匹配起始位置的字符串

<a class="menu_hot" href="/ads/auth/promote.html">應用推廣</a>

#定位href屬性中包含“promote.html”的所有a節點
//a[contains(@href,'promote.html')]

#元素內的文本為“應用推廣”的所有a節點
//a[text()='應用推廣']

#href屬性值是以“/ads”開頭的所有a節點
//a[starts-with(@href,'/ads')]

使用XPath軸

這部分類似BeautifulSoup中的sibling、parents、children方法。

軸名稱 含義
ancestor 選取當前節點的所有先輩節點
ancestor-or-self 選取當前節點的所有先輩節點及當前節點自己
attribute 選取當前節點的所有屬性
child 選取當前節點的所有子節點
descendant 選取當前節點的所有后代節點
descendant-or-self 選取當前節點的所有后代節點及當前節點自己
following 選取黨建節點結束后的所有節點
parent 選取當前節點的父節點
preceding-sibling 選取當前節點之前的所有同輩節點
self 選取當前節點自己
原文地址:http://mp.weixin.qq.com/s/UT4UFDpgo2ER300zq_uqsQ


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM