個人對爬蟲框架Scrapy的理解

Scrapy是一個爲了爬取網站數據,提取結構性數據而編寫的應用框架,我們只需要實現少量代碼,就能夠快速的抓取的數據內容。Scrapy使用了Twisted一部網絡框架來處理網絡通訊,可以加快我們的下載速度,不用自己去實現異步框架,並且包含了各種中間件接口,可以靈活的完成各種需求。

scrapy框架的工作流程:

  1. 首先Spider(爬蟲)將需要發送請求的url(requests)經ScrapyEngine(引擎)交給Scheduer(調度器)。
  2. Scheduler(排序,入隊)處理後,經ScrapyEngine(引擎),DownloaderMiddlewares(下載器中間件,可選,主要有User_Agent,Proxy代理)交給Downloader(下載器)。
  3. Downloader(下載器)向互聯網發送請求,並接受下載響應(response)。將響應(response)經ScrapyEngine(引擎),SpiderMiddlewares(爬蟲中間件,可選)交給Spiders(爬蟲)。
  4. Spiders(爬蟲)處理response(響應界面),提取數據並將數據經ScrapyEngineScrapyEngine(引擎)交給ItemPipeline保存(可以是本地,也可以是數據庫)。提取url重新經ScrapyEngineScrapyEngine(引擎)交給Scheduler(調度器)進入下一個循環。直到無Url請求程序停止結束。

流程圖:

優點:

  1. scrapy是異步的;
  2. 採取可讀性更強的xpath代替正則;
  3. 強大的統計和log系統;
  4. 支持shell方式,方便獨立調試;
  5. 寫middleware,方便寫一些統一的過濾器;
  6. 通過管道的方式存入數據庫。

缺點:

  1. 基於python的爬蟲框架,擴展性比較差;
  2. 基於 twisted 框架,運行中的 exception 是不會幹掉 reactor(反應器),並且異步框架出錯後是不會停掉其他任務的,數據出錯後難以察覺。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章