Scrapy基礎 第三節:Scrapy框架結構和組件介紹

前置知識:

  • 掌握Python的基礎知識
  • 對爬蟲基礎有一定了解

說明: 運行環境

Win10,Python3 64位

目錄:

1 Scrapy框架組成結構

在這裏插入圖片描述

2 Scapry數據流程

Scrapy中的數據流由執行引擎控制,其過程如下:

  1. 引擎打開一個網站(open a domain),找到處理該網站的Spider並向該spider請求第一個要爬取的URL(s)。
  2. 引擎從Spider中獲取到第一個要爬取的URL並在調度器(Scheduler)以Request調度
  3. 引擎向調度器請求下一個要爬取的URL。
  4. 調度器返回下一個要爬取的URL給引擎,引擎將URL通過下載中間件(請求(request)方向)轉發給下載器(Downloader)。
  5. 一旦頁面下載完畢,下載器生成一個該頁面的Response,並將其通過下載中間件(返回(response)方向)發送給引擎。
  6. 引擎從下載器中接收到Response並通過Spider中間件(輸入方向)發送給Spider處理。
  7. Spider處理Response並返回爬取到的Item及(跟進的)新的Request給引擎。
  8. 引擎將(Spider返回的)爬取到的Item給Item Pipeline,將(Spider返回的)Request給調度器。
  9. (從第二步)重複直到調度器中沒有更多地request,引擎關閉該網站。

3 Scrapy組件概覽

在這裏插入圖片描述

4 擴展源碼瞭解

只是瞭解一些用法還不夠,更深入一點需要去看源碼,scrapy也是託管在github上,項目主頁

https://github.com/scrapy/scrapy

源碼這麼多怎麼看,最根本的還是要掌握5大核心模塊是怎麼實現的,它們在源碼中的位置:

(1) Engine:scrapy/scrapy/core/engine.py
(2) Scheduler:scrapy/scrapy/core/scheduler.py
(3) Downloader:scrapy/scrapy/core/downloader/
(4) Spider:scrapy/scrapy/spider.py
(5) Item pipeline:scrapy/scrapy/pipelines/

scrapy入口:

從scrapy_home/bin/scrapy/cmdline.py這個模塊的execute()函數開始
每個具體的命令對應於一個scrapy_home/scrapy/commands包下具體的模塊

調度器(scheduler.py)

scrapy/core/scheduler.py
在這裏插入圖片描述

1)對每一個引擎傳遞過來的request請求進行指紋驗證 request_seen
2) 在request_seen中會判斷request對象的指紋信息fp,是否已經存在於集合中,如果已經存在不再請求,去掉重複
3) 如果沒有請求過,就講request對象保存到隊列mqs中,等待被調度

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