在Scrapy中如何利用Xpath選擇器從HTML中提取目標信息(兩種方式)

前一陣子咱們介紹瞭如何啓動Scrapy項目以及關於Scrapy爬蟲的一些小技巧介紹,沒來得及上車的小夥伴能夠戳這些文章:html

手把手教你如何新建scrapy爬蟲框架的第一個項目(上)瀏覽器

手把手教你如何新建scrapy爬蟲框架的第一個項目(下)框架

關於Scrapy爬蟲項目運行和調試的小技巧(上篇)scrapy

關於Scrapy爬蟲項目運行和調試的小技巧(下篇)函數

今天咱們將介紹在Scrapy中如何利用Xpath選擇器從HTML中提取目標信息。在Scrapy中,其提供了兩種數據提取的方式,一種是Xpath選擇器,一種是CSS選擇器,這一講咱們先聚焦Xpath選擇器,仍然是以伯樂在線網爲示例網站。post

 

一、 打開網站,而後隨機選擇任意一篇文章進行查看,以下圖所示。網站

 

咱們須要提取的信息主要有標題、日期、主題、評論數、正文等等。url

二、接下來咱們就能夠開始寫代碼了,基礎代碼以下圖所示,須要注意的是start_urls參數值改成了具體的URL,其餘的代碼未發生改變。3d

 

三、回到原始網頁,按下鍵盤的快捷鍵F12或者在網頁上點擊鼠標右鍵,而後選擇「檢查(N)」彈出網頁的調試界面,以下圖所示。調試

 

四、點擊下圖中紅色框框的小圖標,能夠實現網頁數據和源碼之間的交互,能夠很方便的幫助咱們定位標籤。

 

五、以下圖所示,當咱們選擇上圖中的小圖標以後,再選擇網頁上的標題,爾後網頁源碼會自動跳轉到咱們定位的部分,能夠看到標題在

標籤下。

 

 

六、爾後咱們就能夠根據上圖中的網頁層次結構寫出標題的Xpath表達式,這裏先提供一種比較笨的方法,從頭至尾進行羅列的寫,「/html/body/div[1]/div[3]/div[1]/div[1]/h1」,有沒有發現灰常的辛苦,像這種大標題信息還比較好提取一些,如果碰到犄角旮旯的信息,就比較難寫表達式了,並且這種方式容易出錯,效率還低。不太小夥伴們不用灰心,瀏覽器給咱們提供了一個便捷的方式,讓咱們能夠直接複製Xpath表達式。在標題處或者目標信息處右鍵,而後選擇「Copy」,再選擇「Copy Xpath」便可進行復制該標籤的Xpath表達式,具體過程以下圖所示。

 

能夠看到複製的Xpath表達式爲「//*[@id="post-113659"]/div[1]/h1」,其中id="post-113659"是屬於這篇文章的一個標識,以下圖所示。

 

經過該標識咱們就能夠很快的定位到標籤,其與咱們用笨方法手動寫出來的Xpath表達式有時候並非一致的。下面將兩個Xpath表達式所匹配的內容分別進行輸出。

七、將Xpath表達式寫入Scrapy爬蟲主體文件中,爾後Debug咱們以前定義的main.py文件,將會獲得下圖的輸出。能夠看到selector1和selector2中的數據便是網頁上的內容,並且內容是一致的。

 

以後點擊中止Debug模式,即可以退出Debug模式。

八、從上圖中咱們能夠看到選擇器將標籤

 

也都取出來了,而咱們想要取的內容僅僅是標籤內部的數據,此時只須要使用在Xpath表達式後邊加入text()函數,即可以將其中的數據進行取出。

 

 

經過這篇文章,咱們能夠了解到儘管咱們本身寫出的Xpath表達式和瀏覽器給咱們返回的Xpath表達式在寫法上並不一致,可是程序運行以後,其返回的數據內容是一致的。換句話說,關於某個目標數據的Xpath表達式並非惟一的,只要符合Xpath表達式語法,即使是寫的很短,也是沒問題的,你開心就好。此外在Scrapy爬蟲框架中,text()函數經常與Xpath表達式運用在一塊,用於提取節點中的數據內容。

相關文章
相關標籤/搜索