天天看點

Python 爬蟲-Scrapy爬蟲架構

2017-07-29 17:50:29

Scrapy是一個快速功能強大的網絡爬蟲架構。

Scrapy不是一個函數功能庫,而是一個爬蟲架構。爬蟲架構是實作爬蟲功能的一個軟體結構和功能元件集合。爬蟲架構是一個半成品,能夠幫助使用者實作專業網絡爬蟲。

 一、Scrapy架構介紹

5+2結構,5個主要子產品加2個中間件。

(1)Engine:控制所有子產品之間的資料流;根據條件觸發事件。不需要使用者修改

(2)Downloader:根據請求下載下傳網頁。不需要使用者修改

(3)Scheduler:對所有爬取請求進行排程管理。不需要使用者修改

(4)Downloader Middleware:實施Engine、Scheduler和Downloader之間進行使用者可配置的控制,進行修改、丢棄、新增請求或響應。使用者可以編寫配置代碼

(5)Spider:解析Downloader傳回的響應(Response);産生爬取項(scraped item);産生額外的爬取請求(Request)。需要使用者編寫配置代碼

(6)Item Pipelines:以流水線方式處理Spider産生的爬取項;由一組操作順序組成,類似流水線,每個操作是一個Item Pipeline類型;可能操作包括:清理、檢驗和查重爬取項中的HTML資料、将資料存儲到資料庫。需要使用者編寫配置代碼

(7)Spider Middleware:對請求和爬取項的再處理,進行修改、丢棄、新增請求或爬取項。使用者可以編寫配置代碼

Python 爬蟲-Scrapy爬蟲架構

流程介紹

Python 爬蟲-Scrapy爬蟲架構

資料流的三個路徑--1:

1 Engine從Spider處獲得爬取請求(Request)

2 Engine将爬取請求轉發給Scheduler,用于排程

資料流的三個路徑--2:

3 Engine從Scheduler處獲得下一個要爬取的請求

4 Engine将爬取請求通過中間件發送給Downloader

5 爬取網頁後,Downloader形成響應(Response,通過中間件發給Engine

6 Engine将收到的響應通過中間件發送給Spider處理

資料流的三個路徑--3:

7 Spider處理響應後産生爬取項(scraped Item和新的爬取請求(Requests)給Engine

8 Engine将爬取項發送給Item Pipeline(架構出口)

9 Engine将爬取請求發送給Scheduler

資料流的出入口以及使用者需要配置的部分

Python 爬蟲-Scrapy爬蟲架構

二、Scrapy庫 和 Requests庫的比較

相同點:

兩者都可以進行頁面請求和爬取,Python爬蟲的兩個重要技術路線

兩者可用性都好,文檔豐富,入門簡單

兩者都沒有處理js、送出表單、應對驗證碼等功能(可擴充) 

差別:

非常小的需求,requests庫

不太小的需求,Scrapy架構,能夠持續的爬取資訊,并積累成自己的爬取庫

定制程度很高的需求(不考慮規模),自搭架構,requests > Scrapy

Python 爬蟲-Scrapy爬蟲架構
上一篇: chkdsk的運用