1. 程式人生 > 實用技巧 >Python爬蟲實戰之研招專業目錄抓取

Python爬蟲實戰之研招專業目錄抓取

今天給大家分享一個實戰專案,利用 Scrapy 框架抓取研招網的招生目錄資訊。包括各個招生單位的所有招生專業資訊以及考試課程資訊等,最終效果如下。(相關原始碼等資源,可關注公眾號:手把手教你學程式設計,回覆yanzhao,即可獲取)

首先給大家簡單介紹下Scrapy框架以及它的安裝。Scrapy是適用於Python的一個快速、高層次的螢幕抓取和web抓取框架,用於抓取web站點並從頁面中提取結構化的資料,整體架構如下:

主要的元件及其作用如下:

  • 引擎(Scrapy Engine)框架的核心,用於整個系統的資料流處理,觸發事務等;

  • 排程器(Scheduler)用於接受引擎傳送的請求,壓入佇列中,並在引擎再次請求時返回.可以看成是網址的優先佇列,由它決定下一個要抓取的網址是什麼,去除重複的網址;

  • 下載器(Downloader)用於下載網頁內容,並將網頁內容返回給蜘蛛,Scrapy下載器建立在twisted這個高效的非同步模型上;

  • 爬蟲(Spiders)用於從響應的結果中提取使用者想要的資訊,即所謂的實體Item。使用者也可以從中提取出網址,讓Scrapy繼續抓取下一個網址;

  • 專案管道(Pipeline)負責處理爬蟲從網頁中抽取的實體,主要是持久化實體例如儲存到資料庫中、驗證實體的有效性、清除不需要的資訊;

  • 下載器中介軟體(Downloader Middlewares)位於Scrapy引擎和下載器之間的框架,用於處理Scrapy引擎與下載器之間的請求及響應;

  • 爬蟲中介軟體

    (Spider Middlewares)介於Scrapy引擎和爬蟲之間的框架,用於處理蜘蛛的響應輸入和請求輸出。

  • 排程中介軟體(SchedulerMiddewares)介於Scrapy引擎和排程之間的中介軟體,從Scrapy引擎傳送到排程的請求和響應。

這些元件是如何協同工作的呢?Scrapy執行流程如下:

  • 引擎從排程器中取出一個網址用於接下來的頁面抓取

  • 引擎把URL封裝成一個請求(Request)傳給下載器

  • 下載器把資源下載下來,並封裝成響應包(Response)傳給Spider;

  • 爬蟲解析Response內容,解析出實體(Item),則交給實體管道進行進一步的處理;解析出連結(URL),則把URL交給排程器等待抓取;

Python標準庫中預設並不包含Scrapy框架,需要自己安裝,Windows下Scrapy的安裝如下:

  • 安裝wheel

pip install wheel

  • 安裝twisted(建議離線安裝

pip install twisted

  • 安裝pywin32

pip install pywin32

  • 安裝scrapy

pip install scrapy

注意:twisted線上安裝經常會失敗,建議離線安裝,此外,也可以藉助第三方軟體如Anaconda直接安裝scrapy,會自動下載安裝相關包。

研招網碩士招生目錄分析