Scrapy 架構分析(一)

Scrapy(/ˈskreɪpi/) 是一個Python編寫的開源網絡爬蟲框架。它是一個被設計用於爬取網絡數據、提取結構性數據的程序框架。

使用Scrapy框架可以很方便地爬取網站。

一、Scrapy入門

菜鳥教程Scrapy入門
Scrapy官網入門教程

  1. 使用pip安裝Scrapy。
  2. 使用 scrapy startproject xxx 新建一個Scrapy 項目。
  3. 創建一個Item類,繼承scrapy.Item,明確抓取的目標。
  4. 使用 scrapy genspider xxx "url" 新建一個spider.
  5. 完善各個代碼文件內容,詳細見上方教程
  6. 使用 scrapy crawl xxx 開始爬取

文件目錄如下圖:
在這裏插入圖片描述

二、Scrapy架構圖

Scrapy架構圖

三、Scrapy核心組件

如架構圖中所示,Scrapy 總共有五個重要的組件和兩個中間件組件:

  • Scrapy Engine(引擎): 負責各個組件之間的通訊,信號、數據傳遞等。
  • Scheduler(調度器): 接收從引擎發送過來的Requests請求並整理暫存請求,當引擎需要時交還給引擎。
  • Downloader(下載器): 負責下載Scrapy 引擎發送的所有Requests請求,並將其獲取到的Responses交還給Scrapy Engine(引擎),由引擎交給Spider來處理。
  • Spider(爬蟲): 負責處理所有Responses,從中分析提取數據,獲取Item字段需要的數據,並提交Requests給引擎。
  • Item Pipeline(管道): 負責處理Spider中獲取到的Item,並進行進行後期處理(詳細分析、過濾、存儲等)的地方。

中間件的功能如架構圖所示

  • Downloader Middlewares(下載中間件): 自定義擴展下載功能的組件。
  • Spider Middlewares(Spider中間件): 自定擴展和操作引擎和Spider中間通信的功能組件(比如進入Spider的Responses;和從Spider出去的Requests)

四、Scrapy 運行流程

Scrapy 數據流轉流程,結合架構圖。

  1. Spider 生成 Requests 發送到 Engine, 中間經過 SpiderMiddleware處理。
  2. Engine 將從 Spider 處獲得的 Requests 發送給 Schedule, 並向其獲取待下載請求(異步)。Schedule 將Requests 整理,按一定順序入隊。
  3. Schedule 將處理好的需要下載的請求發送給Engine。
  4. Engine 得到需下載的請求後,將其發送到Downloader,中間經過DownloadMiddleware, 例如代理中間件,UA中間件等。
  5. Downloader 將請求下載後,生成響應Responses, 送到Engine, 中間經過DownloadMiddleware。
  6. Engine 將Responses 返回到Spider進行處理。中間經過一系列SpiderMiddleware。
  7. Spider 提取Responses 中信息構造Item 和生成新的Requests, 送到Engine,中間經過一系列SpiderMiddleware。
  8. Engine 將Item 送到Item Pipelines進行處理,將Requests 送到Schedule進行處理。
  9. 循環往復,直至結束。

【聲明】:本文部分內容源自Scrapy官網菜鳥教程,侵刪。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章