1. 程式人生 > 實用技巧 >【小白必看】系列:Scrapy爬蟲框架實戰案例

【小白必看】系列:Scrapy爬蟲框架實戰案例

本文的文字及圖片來源於網路,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯絡我們以作處理

初識Scrapy

  • 開發環境
  • 建立專案
  • 建立爬蟲
  • 專案結構圖
  • 建立Item
  • 分析HTML
  • 爬取網頁

開發環境

執行平臺:Windows 10
Python版本:Python 3.6.1
Scrapy版本:Scrapy 1.4.0
IDE:Sublime text3
瀏覽器:chrome

下面我們進入本文的主題,爬取我們的第一個網頁“去哪兒”的酒店城市列表,圖中紅色框框部門。

“去哪兒”:http://bnb.qunar.com/hotcity.jsp

建立專案

scrapy startproject qunar


紅框中是指出建立一個新爬蟲。

建立爬蟲

cd qunar
scrapy genspider hotel bnb.qunar.com

自此,我們的專案算是基本建立好了,其中“hotel”是指爬蟲的名稱,“bnb.qunar.com”爬蟲的域名。不過為了方便我們專案啟動,可以在專案中新建一個entrypoint.py檔案,檔案內容如下:

專案結構圖

建立Item

建立一個新的Item方便我們儲存所爬取的資料,從爬取的頁面中可以看出,我們需要兩個資料就夠了,一個是城市名稱,另一個是城市對應的URL。
下面我們就來建立儲存這兩個資料Item:

上面QunarItem是由scrapy自動生成出來的,我們暫時先不管它,如果你想直接用系統建立的那個Item也是可以的。我這裡是自己新建立一個,看起來比較好管理。

分析HTML

按F12進入開發者工具,在按Ctrl + Shift + c 進入元素查詢狀態,找到包裹我們要爬取內容的div,如圖下所示:

從圖中可以看出,A~Z分別在一個div中,所以我們只要解析出一個div那其他25個div也就解析出來了。然後,我們在從右側中一層一層點進去,找到第一個城市“阿壩”,如下圖所示:

通過對圖的觀察,可以發現,我們首先要找到包裹所以內容class=”b_allcity”的div,在從這個div中找到所有class=”e_city_list”的div,在從中找到所有“li”標籤中的“a”標籤,爬取“a”標籤中的文字及“href”屬性。

item我們已經建立好了,對HTML頁面也進行了分析,下面就可以進入主題了“爬蟲”,有點小激動。

爬取網頁

開啟spiders中的hotel.py檔案。這檔案是系統幫我們建立的,系統幫我們建立了一下關鍵程式碼。如圖

下面我們只要對這麼程式碼稍稍改動一點,並寫出之前我們對HTML解析的程式碼就好了。如圖:

本文中我使用的是“BeautifulSoup”來對HTML程式碼進行解析的,如果有沒裝“BeautifulSoup”的小夥伴可以在命令視窗中直接安裝,安裝程式碼:

pip install bs4

寫到這裡,程式碼就已經寫完了,下面我們就來執行起來看看效果如何。
在命令視窗輸入:

python entrypoint.py

結果:

從圖中可以看出,我們要爬取的內容已經被我們爬取出來了。是不是覺得“so easy”呀!!!