天天看點

從零開始學python爬蟲(九):爬蟲架構scrapy的概念和流程

作者:秋語棠

學習目标:

  1. 了解 scrapy的概念
  2. 了解 scrapy架構的作用
  3. 掌握 scrapy架構的運作流程
  4. 掌握 scrapy中每個子產品的作用

1. scrapy的概念

Scrapy是一個Python編寫的開源網絡爬蟲架構。它是一個被設計用于爬取網絡資料、提取結構性資料的架構。

Scrapy 使用了Twisted['twɪstɪd]異步網絡架構,可以加快我們的下載下傳速度。 Scrapy文檔位址:http://scrapy-chs.readthedocs.io/zh_CN/1.0/intro/overview.html

2. scrapy架構的作用

少量的代碼,就能夠快速的抓取

3. scrapy的工作流程

3.1 回顧之前的爬蟲流程

從零開始學python爬蟲(九):爬蟲架構scrapy的概念和流程

3.2 上面的流程可以改寫為

從零開始學python爬蟲(九):爬蟲架構scrapy的概念和流程

3.3 scrapy的流程

從零開始學python爬蟲(九):爬蟲架構scrapy的概念和流程

其流程可以描述如下:

  1. 爬蟲中起始的url構造成request對象-->爬蟲中間件-->引擎-->排程器
  2. 排程器把request-->引擎-->下載下傳中間件--->下載下傳器
  3. 下載下傳器發送請求,擷取response響應---->下載下傳中間件---->引擎--->爬蟲中間件--->爬蟲
  4. 爬蟲提取url位址,組裝成request對象---->爬蟲中間件--->引擎--->排程器,重複步驟2
  5. 爬蟲提取資料--->引擎--->管道處理和儲存資料

注意:

  • 圖中中文是為了友善了解後加上去的
  • 圖中綠色線條的表示資料的傳遞
  • 注意圖中中間件的位置,決定了其作用
  • 注意其中引擎的位置,所有的子產品之前互相獨立,隻和引擎進行互動

3.4 scrapy的三個内置對象

  • request請求對象:由url method post_data headers等構成
  • response響應對象:由url body status headers等構成
  • item資料對象:本質是個字典

3.5 scrapy中每個子產品的具體作用

從零開始學python爬蟲(九):爬蟲架構scrapy的概念和流程

  • 爬蟲中間件和下載下傳中間件隻是運作邏輯的位置不同,作用是重複的:如替換UA等

小結

  1. scrapy的概念:Scrapy是一個為了爬取網站資料,提取結構性資料而編寫的應用架構
  2. scrapy架構的運作流程以及資料傳遞過程:

3.scrapy架構的作用:通過少量代碼實作快速抓取

4.掌握scrapy中每個子產品的作用: 引擎(engine):負責資料和信号在不腰痛子產品間的傳遞 排程器(scheduler):實作一個隊列,存放引擎發過來的request請求對象 下載下傳器(downloader):發送引擎發過來的request請求,擷取響應,并将響應交給引擎 爬蟲(spider):處理引擎發過來的response,提取資料,提取url,并交給引擎 管道(pipeline):處理引擎傳遞過來的資料,比如存儲 下載下傳中間件(downloader middleware):可以自定義的下載下傳擴充,比如設定代理ip 爬蟲中間件(spider middleware):可以自定義request請求和進行response過濾,與下載下傳中間件作用重複

繼續閱讀