scrapy框架介紹

Scrapy框架圖:數據庫

scrapy-engine:引擎,負責itemPipeline+Spiders+Scheduler+Downloader間的通信和數據傳遞緩存

scheduler:調度器,負責接收引擎發送過來的Requests請求,並將請求按必定方式排列入隊,以後等待引擎來請求時交給引擎框架

downloader:下載器,負責下載引擎發送的全部Requests請求,並將其捕獲到的Responses交還給引擎,引擎交給spiders來處理dom

spiders:負責處理全部的Responses,從中分析提取數據,獲取item字段須要的數據,並將須要跟進的URL提交給引擎,再次進入調度器scrapy

itempipeline:負責處理spiders中獲取到的item字段,並進行處理(去重/持久化存儲:就是保存數據)ide

downloader middlerwares:下載中間件,是一個自定義擴展下載功能的組件網站

spiders middlewares:spider中間件,操做引擎和spiders之間通訊的中間件(進入spiders的Responses和從spiders出去的Requests)中間件

 

流程(簡化版):blog

程序開始運行ip

spiders將須要處理的網站URL交給引擎,引擎再將Requests請求交給調度器scheduler進行處理:後者將Requests請求按必定方式排列入隊;

必定時間後(引擎要求取回Resquests)調度器將處理過的Requests交給引擎,引擎按照下載中間件downloader middlewares的設置要求將

Requests交給下載器downloader;下載器處理Requests(若是Requests下載失敗,引擎會告訴調度器,讓後者記錄並在以後從新下載),下

載成功的Resquests能夠捕獲到相應的Responses;下載器將Responses(spider中間件處理過的)交給引擎,隨後引擎將Responses交給spiders

處理;spiders處理Responses,將提取到的item字段數據交給itempipeline,同時將須要跟進的URL交給引擎,引擎再交給調度器,以此循環。

當調度器中不存在Requests請求時,程序運行結束

 

Scrapy項目實現步驟:

1.創建項目:

  -在CMD下輸入scrapy3 startproject item_name(項目名)

  -cd item_name>>>scrapy3 genspider spider_name(spider名) domain_name(域名)

2.在items.py文件中定義字段,這些字段用來臨時存儲須要保存的數據(方便之後數據保存到數據庫或本地)

3.在spider_name.py文件下編寫爬蟲腳本

4.在pipelines.py文件下保存數據

5.在settings.py文件下配置相關環境,這一步也不是必須作的

  -將ROBOTSTXT_OBAY=True修改成ROBOTSTXT_OBAY=False(ROBOTSTXT協議規定哪些目錄能夠抓取)

  -設置Requests頭信息,取消註釋行DEFAULT_REQUEST_HEADERS={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94             Safari/537.36'}

  -取消如下注釋:Scrapy能夠緩存已有的Requests,當再次請求時,若是存在緩存文檔則返回緩存文檔,而不用去網站請求,既能夠加快本地緩存速度,也能夠減輕網站壓力

相關文章
相關標籤/搜索