【Python】一篇文章讓你秒懂Scrapy爬蟲框架

前言

本文來自嵩天老師《Python網絡爬蟲與信息提取》課程中關於Scrapy框架的介紹。這是我認爲對Scrapy框架講得最爲通俗易懂、條理清晰的教程。

Scrapy是一個爬蟲框架

  • 爬蟲框架是實現爬蟲功能的一個軟件結構和功能組件集合。
  • 爬蟲框架是一個半成品,能夠幫助用戶實現專業網絡爬蟲。

“5+2”結構

  • 5是指5個模塊:SPIDERS, ENGINE, SCHEDULER, DOWNLOADER, ITEM PIPELIINES
  • 2是指2箇中間件:spider middleware(位於spiders和engine之間),downloader middleware(位於downloader和engine之間)
    在這裏插入圖片描述

3條數據流路徑

  • spiders -> engine -> scheduler(1,2):engine從spiders獲取了用戶的爬取請求(requests,可簡單理解爲一個url),engine將請求發送給scheduler模塊進行調度。
  • scheduler -> engine -> downloader -> engine -> spiders(3,4,5,6):engine從schedule獲取一個請求(requests,真實的請求),engine通過中間件(downloader middleware)將請求發送給downloader,downloader獲得請求後,連接互聯網真實的爬取網頁,並將爬取的內容封裝成對象(response,響應)發送給engine,engine再將響應發送給spiders進行解析。
    (總結:這條數據流講述一個真實的爬取url的請求,經過scheduler,downloader,最終返回的相關內容到達spiders)
  • spiders -> engine -> item pipelines / scheduler(7,8):spiders處理響應的內容,得到兩個數據類型:scraped item(爬取項)、新的爬取請求(即:我們從網頁上獲得一個鏈接之後,如果這個網頁中的其他鏈接也是我們感興趣的內容,就可以在spiders中增加新的功能,再次進行爬取。),spiders將這兩項內容發送給engine,而engine收到之後,將爬取項發送給item pipelines,將requests發送給scheduler。

在這裏插入圖片描述
小結:

  • engine控制着各個模塊的數據流,不斷從schedule獲得真實的爬取請求,併發送給downloader進行爬取。
  • 整個框架的執行是從spiders向engine發送第一個請求開始,到獲得所有鏈接的內容並將內容處理完放到item pipelines結束。所以框架的入口是spiders,出口是item pipelines。
  • engine、downloaders、scheduler是已有實現,無需用戶編輯;spiders和item pipelines需要用戶自行編寫。

5個模塊的功能

  • Engine(不需要用戶修改):
    • 控制所有模塊之間的數據流
    • 根據條件觸發事件
  • Downloader(不需要用戶修改):
    • 根據請求下載頁面
  • Scheduler(不需要用戶修改):
    • 對所有爬取請求進行調度管理
  • Spider(需要用戶編寫配置代碼)
    • 解析Downloader返回的響應(Response)
    • 產生爬取項(scrapyed item)
    • 產生額外的爬取請求(Request)
  • Item Pipelines(需要用戶編寫配置代碼)
    • 以流水線方式處理Spider產生的爬取項
    • 由一組操作順序組成,類似流水線,每個操作是一個Item Pipeline類型
    • 可能操作包括:清理、檢驗和查重爬取項中的HTML數據、將數據存儲到數據庫。

2箇中間件

  • Downloader Middleware(用戶可編寫配置代碼)
    • 目的:實施Engine、Scheduler和Downloader之間的數據流進行用戶可配置的控制
    • 功能修改、丟棄、新增請求或響應
  • Spider Middleware(用戶可編寫配置代碼)
    • 目的:對請求和爬取項的再處理
    • 功能:修改、丟棄、新增請求或爬取項

總結

從上述的介紹中,我們可以看出,框架中的五個模塊形成了既定的功能,我們重點編寫Spiders和Item Pipelines,用戶爲了操作其中的數據流,可以通過兩個中間件,對request、response、item進行操作。


參考:https://www.bilibili.com/video/BV1qs411n79v?p=50

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