提問: 為什么使用scrapy框架來寫爬蟲 ?
在python爬蟲中:requests + selenium 可以解決目前90%的爬蟲需求,難道scrapy 是解決剩下的10%的嗎?顯然不是。scrapy框架是為了讓我們的爬蟲更強大、更高效。接下來我們一起學習一下它吧。
1.scrapy 的基礎概念:
scrapy 是一個為了爬取網站數據,提取結構性數據而編寫的應用框架,我們只需要實現少量代碼,就能夠快速的抓取到數據內容。Scrapy 使用了 Twisted['twɪstɪd]
(其主要對手是Tornado)異步網絡框架來處理網絡通訊,可以加快我們的下載速度,不用自己去實現異步框架,並且包含了各種中間件接口,可以靈活的完成各種需求。
http://scrapy-chs.readthedocs.io/zh_CN/1.0/intro/overview.html
2. scrapy 的工作流程:
之前我們所寫爬蟲的流程:
那么 scrapy是如何幫助我們抓取數據的呢?
scrapy框架的工作流程:1.首先Spiders(爬蟲)將需要發送請求的url(requests)經ScrapyEngine(引擎)交給Scheduler(調度器)。
2.Scheduler(排序,入隊)處理后,經ScrapyEngine,DownloaderMiddlewares(可選,主要有User_Agent, Proxy代理)交給Downloader。
3.Downloader向互聯網發送請求,並接收下載響應(response)。將響應(response)經ScrapyEngine,SpiderMiddlewares(可選)交給Spiders。
4.Spiders處理response,提取數據並將數據經ScrapyEngine交給ItemPipeline保存(可以是本地,可以是數據庫)。
提取url重新經ScrapyEngine交給Scheduler進行下一個循環。直到無Url請求程序停止結束。