1. 程式人生 > 其它 >Python爬蟲基礎講解(二十五):scrapy 框架結構

Python爬蟲基礎講解(二十五):scrapy 框架結構

Python爬蟲、資料分析、網站開發等案例教程視訊免費線上觀看

https://space.bilibili.com/523606542 

Python學習交流群:1039649593

scrapy 框架結構

思考

  • scrapy 為什麼是框架而不是庫?
  • scrapy是如何工作的?

專案結構

在開始爬取之前,必須建立一個新的Scrapy專案。進入您打算儲存程式碼的目錄中,執行下列命令:

注意:建立專案時,會在當前目錄下新建爬蟲專案的目錄。

這些檔案分別是:

  • scrapy.cfg:專案的配置檔案
  • quotes/:該專案的python模組。之後您將在此加入程式碼
  • quotes/items.py:專案中的item檔案
  • quotes/middlewares.py:爬蟲中介軟體、下載中介軟體(處理請求體與響應體)
  • quotes/pipelines.py:專案中的pipelines檔案
  • quotes/settings.py:專案的設定檔案
  • quotes/spiders/:放置spider程式碼的目錄
Scrapy原理圖

各個元件的介紹

  1. Engine。引擎,處理整個系統的資料流處理、觸發事務,是整個框架的核心。

  2. ltem。專案,它定義了爬取結果的資料結構,爬取的資料會被賦值成該ltem物件。

  3. Scheduler。排程器,接受引擎發過來的請求並將其加入佇列中,在引擎再次請求的時候將請求提供給引擎。

  4. Downloader。下載器,下載網頁內容,並將網頁內容返回給蜘蛛。

  5. Spiders。蜘蛛,其內定義了爬取的邏輯和網頁的解析規則,它主要負責解析響應並生成提結果和新的請求。

  6. Item Pipeline。專案管道,負責處理由蜘蛛從網頁中抽取的專案,它的主要任務是清洗、驗證和儲存資料。

  7. Downloader Middlewares。下載器中介軟體,位於引擎和下載器之間的鉤子框架,主要處理引擎與下載器之間的請求及響應。

  8. Spider Middlewares。蜘蛛中介軟體,位於引擎和蜘蛛之間的鉤子框架,主要處理蜘蛛輸入的響應和輸出的結果及新的請求。

資料的流動

  • Scrapy Engine(引擎):負責Spider、ltemPipeline、Downloader、Scheduler中間的通訊,訊號、資料傳遞等。

  • Scheduler(排程器):負責接受引擎傳送過來的Request請求,並按照一定的方式進行整理排列,入隊,當引擎需要時,交還給引擎。

  • Downloader(下載器):負責下載Scrapy Engine(引擎)傳送的所有Requests請求,並將其獲取到的Responses交還給Scrapy Engine(引擎),由引擎交給Spider來處理,

  • Spider(爬蟲)︰負責處理所有Responses,從中分析提取資料,獲取ltem欄位需要的資料,並將需要跟進的URL提交給引擎,再次進入Scheduler(排程器),

  • ltem Pipeline(管道):負責處理Spider中獲取到的ltem,並進行進行後期處理(詳細分析、過濾、儲存等)的地方.

  • Downloader Middlewares(下載中介軟體):你可以當作是一個可以自定義擴充套件下載功能的元件。

  • Spider Middlewares(Spider中介軟體):你可以理解為是一個可以自定擴充套件和操作引擎和Spider中間通訊的功能元件(比如進入Spider的Responses;和從Spider出去的Requests)