Scrapy是什麼?數據庫
scrapy 是一個爲了爬取網站數據,提取結構性數據而編寫的應用框架,咱們只須要實現少許代碼,就可以快速的抓取到數據內容。Scrapy 使用了 Twisted['twɪstɪd](其主要對手是Tornado)異步網絡框架來處理網絡通信,能夠加快咱們的下載速度,不用本身去實現異步框架,而且包含了各類中間件接口,能夠靈活的完成各類需求。網絡
異步與非阻塞的區別:異步:調用在發出以後,這個調用就直接返回,無論有無結果。框架
非阻塞:關注的是程序在等待調用結果(消息,返回值)時的狀態,指在不能馬上獲得結果以前,該調用不會阻塞當前線程。異步
scrapy詳細工做流程:
1.首先Spiders(爬蟲)將須要發送請求的url(requests)經ScrapyEngine(引擎)交給Scheduler(調度器)。scrapy
2.Scheduler(排序,入隊)處理後,經ScrapyEngine,DownloaderMiddlewares(可選,主要有User_Agent, Proxy代理)交給Downloader。ide
3.Downloader向互聯網發送請求,並接收下載響應(response)。將響應(response)經ScrapyEngine,SpiderMiddlewares(可選)交給Spiders。 網站
4.Spiders處理response,提取數據並將數據經ScrapyEngine交給ItemPipeline保存(能夠是本地,能夠是數據庫)。url
5.提取url從新經ScrapyEngine交給Scheduler進行下一個循環。直到無Url請求程序中止結束。
spa
Scrapy主要包括瞭如下組件:線程