1. 程式人生 > 實用技巧 >scrapy框架爬蟲流程與介紹

scrapy框架爬蟲流程與介紹

scrapy框架爬蟲流程與介紹

學習scrapy框架的網上教材:https://lib-nuanxin.wqxuetang.com/read/pdf/3210751

1.scrapy 的基礎概念:

  scrapy 是一個為了爬取網站資料,提取結構性資料而編寫的應用框架,我們只需要實現少量程式碼,就能夠快速的抓取到資料內容。Scrapy 使用了 Twisted['twɪstɪd](其主要對手是Tornado)非同步網路框架來處理網路通訊,可以加快我們的下載速度,不用自己去實現非同步框架,並且包含了各種中介軟體介面,可以靈活的完成各種需求。

非同步與阻塞的區別.png

二、整體架構

  • 引擎(Scrapy Engine):用來處理整個系統的資料流處理,觸發事務 。
  • 排程器(Scheduler):用來接受引擎發過來的請求,壓入佇列中,並在引擎再次請求的時候返回。
  • 下載器(Downloader):用於下載網頁內容,並將網頁內容返回給Spiders。
  • 爬蟲(Spiders):爬蟲是主要幹活的,用它來制訂特定域名或網頁的解析規則。編寫用於分析response並提取item(即獲取到的item)或額外跟進的URL的類。每個spider負責處理一個特定(或一些)網站。
  • 專案管道(ItemPipeline):負責處理有Spiders從網頁中抽取的專案,他的主要任務是清晰、驗證和儲存資料。當頁面被Spiders解析後,將被髮送到專案管道,並經過幾個特定的次序處理資料。
  • 下載器中介軟體(DownloaderMiddlewares):位於Scrapy引擎和下載器之間的鉤子框架,主要是處理Scrapy引擎與下載器之間的請求及響應。
  • 蜘蛛中介軟體(SpiderMiddlewares):介於Scrapy引擎和Spiders之間的鉤子框架,主要工作是處理Spiders的響應輸入和請求輸出。
  • 排程中介軟體(SchedulerMiddlewares):介於Scrapy引擎和排程之間的中介軟體,從Scrapy引擎傳送到排程的請求和響應。

Image

爬取流程:上圖綠線是資料流向,所有的操作都是圍繞著ScrapyEngine進行操作的,也就是說

ScrapyEngine處理指揮著整個框架;

  1. 引擎開啟一個網站(open adomain),找到處理該網站的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給ItemPipeline,將(Spider返回的)Request給排程器。
  9. (從第二步)重複直到排程器中沒有更多地request,引擎關閉該網站。

Image