您好,登錄后才能下訂單哦!
小編給大家分享一下scrapy在python分布式爬蟲的使用范圍,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
1.scrapy框架是否可以自己實現分布式?
不可以。原因有二。
其一:因為多臺機器上部署的scrapy會各自擁有各自的調度器,這樣就使得多臺機器無法分配start_urls列表中的url。(多臺機器無法共享同一個調度器)
其二:多臺機器爬取到的數據無法通過同一個管道對數據進行統一的數據持久出存儲。(多臺機器無法共享同一個管道)
2.基于scrapy-redis組件的分布式爬蟲
scrapy-redis組件中為我們封裝好了可以被多臺機器共享的調度器和管道,我們可以直接使用并實現分布式數據爬取。
實現方式:
基于該組件的RedisSpider類
基于該組件的RedisCrawlSpider類
3.分布式實現流程:上述兩種不同方式的分布式實現流程是統一的
3.1 下載scrapy-redis組件:
pip install scrapy-redis
3.2 redis配置文件的配置:
注釋該行:bind 127.0.0.1,表示可以讓其他ip訪問redis
將yes該為no:protected-mode no,表示可以讓其他ip操作redis
3.3 修改爬蟲文件中的相關代碼:
將爬蟲類的父類修改成基于RedisSpider或者RedisCrawlSpider。注意:如果原始爬蟲文件是基于 Spider的,則應該將父類修改成RedisSpider,如果原始爬蟲文件是基于CrawlSpider的,則應該將其父類修改成RedisCrawlSpider。
注釋或者刪除start_urls列表,切加入redis_key屬性,屬性值為scrpy-redis組件中調度器隊列的名稱
3.4 在配置文件中進行相關配置,開啟使用scrapy-redis組件中封裝好的管道
看完本篇文章我們知道,因為兩點的限制,scrapy框架是不能在python分布式爬蟲獨立運用的,但是我們可以配合其他的一些函數來運行,這點小伙伴們可要記住啦~
以上是“scrapy在python分布式爬蟲的使用范圍”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。