溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

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

發(fā)布時間:2020-07-04 08:34:09 來源:網(wǎng)絡(luò) 閱讀:427 作者:pengdongcheng 欄目:編程語言

前一陣子我們介紹了如何啟動Scrapy項目以及關(guān)于Scrapy爬蟲的一些小技巧介紹,沒來得及上車的小伙伴可以戳這些文章:

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

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

關(guān)于Scrapy爬蟲項目運行和調(diào)試的小技巧(上篇)

關(guān)于Scrapy爬蟲項目運行和調(diào)試的小技巧(下篇)

今天我們將介紹在Scrapy中如何利用Xpath選擇器從HTML中提取目標(biāo)信息。在Scrapy中,其提供了兩種數(shù)據(jù)提取的方式,一種是Xpath選擇器,一種是CSS選擇器,這一講我們先聚焦Xpath選擇器,仍然是以伯樂在線網(wǎng)為示例網(wǎng)站。

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

1、?打開網(wǎng)站,然后隨機選擇任意一篇文章進(jìn)行查看,如下圖所示。

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

我們需要提取的信息主要有標(biāo)題、日期、主題、評論數(shù)、正文等等。

2、接下來我們就可以開始寫代碼了,基礎(chǔ)代碼如下圖所示,需要注意的是start_urls參數(shù)值改為了具體的URL,其他的代碼未發(fā)生改變。

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

3、回到原始網(wǎng)頁,按下鍵盤的快捷鍵F12或者在網(wǎng)頁上點擊鼠標(biāo)右鍵,然后選擇“檢查(N)”彈出網(wǎng)頁的調(diào)試界面,如下圖所示。

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

4、點擊下圖中紅色框框的小圖標(biāo),可以實現(xiàn)網(wǎng)頁數(shù)據(jù)和源碼之間的交互,可以很方便的幫助我們定位標(biāo)簽。

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

5、如下圖所示,當(dāng)我們選擇上圖中的小圖標(biāo)之后,再選擇網(wǎng)頁上的標(biāo)題,爾后網(wǎng)頁源碼會自動跳轉(zhuǎn)到我們定位的部分,可以看到標(biāo)題在

標(biāo)簽下。


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

6、爾后我們就可以根據(jù)上圖中的網(wǎng)頁層次結(jié)構(gòu)寫出標(biāo)題的Xpath表達(dá)式,這里先提供一種比較笨的方法,從頭到尾進(jìn)行羅列的寫,“/html/body/div[1]/div[3]/div[1]/div[1]/h2”,有沒有發(fā)現(xiàn)灰常的辛苦,像這種大標(biāo)題信息還比較好提取一些,若是碰到犄角旮旯的信息,就比較難寫表達(dá)式了,而且這種方式容易出錯,效率還低。不過小伙伴們不用灰心,瀏覽器給我們提供了一個便捷的方式,讓我們可以直接復(fù)制Xpath表達(dá)式。在標(biāo)題處或者目標(biāo)信息處右鍵,然后選擇“Copy”,再選擇“Copy Xpath”即可進(jìn)行復(fù)制該標(biāo)簽的Xpath表達(dá)式,具體過程如下圖所示。

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

可以看到復(fù)制的Xpath表達(dá)式為“//*[@id="post-113659"]/div[1]/h2”,其中id="post-113659"是屬于這篇文章的一個標(biāo)識,如下圖所示。

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

通過該標(biāo)識我們就可以很快的定位到標(biāo)簽,其與我們用笨方法手動寫出來的Xpath表達(dá)式有時候并不是一致的。下面將兩個Xpath表達(dá)式所匹配的內(nèi)容分別進(jìn)行輸出。

7、將Xpath表達(dá)式寫入Scrapy爬蟲主體文件中,爾后Debug我們之前定義的main.py文件,將會得到下圖的輸出??梢钥吹絪elector1和selector2中的數(shù)據(jù)即是網(wǎng)頁上的內(nèi)容,而且內(nèi)容是一致的。

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

之后點擊停止Debug模式,便可以退出Debug模式。

8、從上圖中我們可以看到選擇器將標(biāo)簽

也都取出來了,而我們想要取的內(nèi)容僅僅是標(biāo)簽內(nèi)部的數(shù)據(jù),此時只需要使用在Xpath表達(dá)式后邊加入text()函數(shù),便可以將其中的數(shù)據(jù)進(jìn)行取出。


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

通過這篇文章,我們可以了解到盡管我們自己寫出的Xpath表達(dá)式和瀏覽器給我們返回的Xpath表達(dá)式在寫法上并不一致,但是程序運行之后,其返回的數(shù)據(jù)內(nèi)容是一致的。換句話說,關(guān)于某個目標(biāo)數(shù)據(jù)的Xpath表達(dá)式并不是唯一的,只要符合Xpath表達(dá)式語法,即便是寫的很短,也是沒問題的,你開心就好。此外在Scrapy爬蟲框架中,text()函數(shù)常常與Xpath表達(dá)式運用在一塊,用于提取節(jié)點中的數(shù)據(jù)內(nèi)容。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI