Python中Scrapy架構元素選取器XPath的簡單一實例

來源:互聯網
上載者:User

標籤:索引   table   des   soup   選擇   ade   parent   gpo   tab   

原文標題:《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

Python中Scrapy架構元素選取器XPath的簡單一實例

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.