初識scrapy框架
首先我認為scrapy框架和編寫的普通爬蟲文件沒有什么區(qū)別 唯一不同的是它可以把你得各種爬蟲需求進行封裝 而一些中間件也會幫助你實現你的爬蟲需求 一般來說只需要編寫items.py spiders settings pipelines這四個模塊的內容 這樣簡單明了 高效便捷 不得不提的是scrapy框架實現去重簡直太優(yōu)秀?Scrapy 使用了 Twisted['tw?st?d] 異步網絡框架來處理網絡通訊,可以加快我們的下載速度,不用自己去實現異步框架,并且包含了各種中間件接口,可以靈活的完成各種需求 必須夸 加雞腿
scrapy框架流程,結構

Scrapy Engine(引擎): 負責Spider、ItemPipeline、Downloader、Scheduler中間的通訊,信號、數據傳遞等。
Scheduler(調度器): 它負責接受引擎發(fā)送過來的Request請求,并按照一定的方式進行整理排列,入隊,當引擎需要時,交還給引擎。
Downloader(下載器):負責下載Scrapy Engine(引擎)發(fā)送的所有Requests請求,并將其獲取到的Responses交還給Scrapy Engine(引擎),由引擎交給Spider來處理,
Spider(爬蟲):它負責處理所有Responses,從中分析提取數據,獲取Item字段需要的數據,并將需要跟進的URL提交給引擎,再次進入Scheduler(調度器),
Item Pipeline(管道):它負責處理Spider中獲取到的Item,并進行進行后期處理(詳細分析、過濾、存儲等)的地方.
Downloader Middlewares(下載中間件):可以自定義擴展下載功能的組件(代理、cokies等)。
Spider Middlewares(Spider中間件):可以自定擴展和操作引擎和Spider中間通信的功能組件(比如進入Spider的Responses;和從Spider出去的Requests)
啊啊啊啊啊啊? ?腦殼疼 這里有簡單的圖

入手使用scrapy框架
1.創(chuàng)建項目:
先切換到自定義的目錄下?
執(zhí)行命令:
scrapy startproject (爬蟲名字:spiderproject)
2.創(chuàng)建(普通)文件
切換到項目目錄下 進入項目主目錄 創(chuàng)建爬蟲文件
執(zhí)行命令:
scrapy genspider baiduspider 域名(baidu.com)
創(chuàng)建文件
切換到項目目錄下 進入項目主目錄 創(chuàng)建爬蟲文件
執(zhí)行命令:
scrapy genspider baiduspider 域名(baidu.com)
3.用pycharm打開項目

4.運行爬蟲文件
先切換到爬蟲文件所在目錄
命令行:scrapy crawl (爬蟲文件名字)
scrapy框架如何工作
啟動爬蟲:
Scrapy框架為Spider的 start_urls 屬性中的每個url創(chuàng)建了Request 對象,并將 parse 方法作為回調函數(callback)賦值給了requests,而requests對象經過調度器的調度,執(zhí)行生成response對象并送回給parse() 方法進行解析,所以請求鏈接的改變是靠回調函數實現的。
yield scrapy.Request(self.url, callback=self.parse)? <必須有>
總結:?
HOW? scrapy框架協(xié)調工作
1.spider的yield將request發(fā)送給engine
2.engine對request進行排隊處理 不做任何操作 在scheduler需要時返回給scheduler
3.scheduler生成request交給engine
4.?engine拿到request通過middleware發(fā)送給downloader
5.downloader在獲取到response后 經過middleware發(fā)送給engine
6.?engine在獲取到response后,返回給spider,spider會對response進行處理 解析出items或者requests
7.將解析出來的items或者requests,items? 發(fā)送給pipelines,將requests發(fā)送給scheduler
8.只有調度器中不存在request時,程序才停止,及時請求失敗scrapy也會重新進行請求