Python之分散式爬蟲的實現步驟
什麼是分散式爬蟲?
預設情況下,scrapy爬蟲是單機爬蟲,只能在一臺電腦上執行,因為爬蟲排程器當中的佇列queue去重和set集合都是在本機上建立的,其他電腦無法訪問另一臺電腦上的記憶體中的內容。分散式爬蟲是一個用共同的爬蟲程式,同時部署到多臺電腦上執行,這樣可以提高爬蟲速度,實現分散式爬蟲。
今天我就來給大家講一下使用scrapy_redis實現分散式爬蟲
第一步:
建立一個scrapy爬蟲專案,完善程式碼爬出你要爬取的資料,至於如何建立不知道的小夥伴請看我前面的關於scrapy框架的使用的部落格
第二步:
更改scrapy爬蟲專案中的一些內容
1.引入scrapy_redis,下面的程式碼使用一個就可以,RedisCrawlSpider和RedisSpider執行步驟相同,
from scrapy_redis.spiders import RedisCrawlSpider
# from scrapy_redis.spiders import RedisSpider
將繼承換為RedisCrawlSpider或RedisSpider
2.註釋掉start_urls,新增一個redis_key='類名:start_urls',當然這裡的類名可以隨便寫,不過規範的寫法是你的"爬蟲類名:+start_urls",這裡字串中類名不分大小寫
redis_key='類名:start_urls'
3.setting檔案中新增下面幾句程式碼
# 使用scrapy_redis裡的去重元件,不使用scrapy預設的去重方式
DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter'
# 使用scrapy_redis裡的排程器元件,不使用預設的排程器
# scheduler排程器
SCHEDULER = 'scrapy_redis.scheduler.Scheduler'
# 允許暫停,redis請求記錄不丟失
SCHEDULER_PERSIST = True
# # 預設的scrapy_redis請求佇列形式(按優先順序)
# # priority優先權
# SCHEDULER_QUEUE_CLASS ='scrapy_redis.queue.SpiderPriorityQueue'
# 連線伺服器端的redis資料庫
REDIS_URL = 'redis://root:@192.168.52.176:6379'
REDIS_URL = 'redis://root:@192.168.52.176:6379' @後面寫要連線到的伺服器端的IP,6379是預設的埠號
4.在settings檔案中解註釋ITEM_PIPELINES 並將紅框中的程式碼新增進去,使資料可以存入redis資料庫中,
第三步:
1.服務端修改redis.windows.conf檔案,在如圖所示的位置新增: bind 服務端IP。
2.將你的程式碼發給另一臺主機並開啟
3.開啟服務端,不知道如何開啟的小夥伴可以看一下我的上篇部落格
4.兩臺主機同時在控制檯輸入 scrapy crawl 爬蟲名,執行爬蟲程式,因為沒有start_urls所以會等待傳入開始網址
5.開啟服務端的主機另開啟一個命令提示符,連線本地伺服器,輸入lpush + 第二步中的redis_key的值+ 開始網址
例:
lpush 類名:start_urls http://blog.jobbole.com/all-posts/
傳入開始網址之後爬蟲程式會接收到 ,然後開始爬蟲
注意:客戶端的小夥伴只需要將服務端的程式碼檔案複製過來,開啟執行就行了,不需要做其他操作
相關文章
- 分散式爬蟲的部署之Scrapyd分散式部署分散式爬蟲
- 分散式爬蟲的部署之Gerapy分散式管理分散式爬蟲
- 分散式爬蟲原理之分散式爬蟲原理分散式爬蟲
- scrapy-redis實現爬蟲分散式爬取分析與實現Redis爬蟲分散式
- python爬蟲步驟是什麼呢?Python爬蟲
- 分散式爬蟲分散式爬蟲
- Python分散式爬蟲(三) - 爬蟲基礎知識Python分散式爬蟲
- Python爬蟲教程-34-分散式爬蟲介紹Python爬蟲分散式
- [Python3網路爬蟲開發實戰] 分散式爬蟲原理Python爬蟲分散式
- 2個月精通Python爬蟲——3大爬蟲框架+6場實戰+反爬蟲技巧+分散式爬蟲Python爬蟲框架分散式
- 分散式爬蟲的部署之Scrapyd批量部署分散式爬蟲
- 分散式爬蟲原理分散式爬蟲
- 分散式爬蟲的部署之Scrapyd對接Docker分散式爬蟲Docker
- 大規模非同步新聞爬蟲的分散式實現非同步爬蟲分散式
- 打造高效的分散式爬蟲系統:利用Scrapy框架實現分散式爬蟲框架
- 分散式爬蟲之知乎使用者資訊爬取分散式爬蟲
- 分散式爬蟲很難嗎?用Python寫一個小白也能聽懂的分散式知乎爬蟲分散式爬蟲Python
- scrapy_redis 和 docker 實現簡單分散式爬蟲RedisDocker分散式爬蟲
- Python爬蟲精簡步驟1 獲取資料Python爬蟲
- Python爬蟲開發與專案實戰--分散式程式Python爬蟲分散式
- 19--Scarpy05:增量式爬蟲、分散式爬蟲爬蟲分散式
- python分散式爬蟲如何設計架構?Python分散式爬蟲架構
- 基於java的分散式爬蟲Java分散式爬蟲
- python的爬蟲功能如何實現Python爬蟲
- Python爬蟲是如何實現的?Python爬蟲
- 爬蟲(14) - Scrapy-Redis分散式爬蟲(1) | 詳解爬蟲Redis分散式
- Python簡單兩步實現天氣爬蟲採集器Python爬蟲
- Python爬蟲的兩套解析方法和四種爬蟲實現Python爬蟲
- Python 爬蟲IP代理池的實現Python爬蟲
- Python實現微博爬蟲,爬取新浪微博Python爬蟲
- 爬蟲——爬取貴陽房價(Python實現)爬蟲Python
- Python爬蟲實戰之bilibiliPython爬蟲
- 分散式爬蟲總結和使用分散式爬蟲
- 分散式爬蟲學習筆記分散式爬蟲筆記
- Win10+Python3.6配置Spark建立分散式爬蟲Win10PythonSpark分散式爬蟲
- 如何構建一個分散式爬蟲:實戰篇分散式爬蟲
- Python爬蟲教程-05-python爬蟲實現百度翻譯Python爬蟲
- 爬蟲 | 基本步驟和解析網頁的幾種方法爬蟲網頁