分布式爬蟲
分布式爬蟲介紹
什么是分布式爬蟲?
分布式爬蟲是將多臺電腦構建成一個機群,然后將爬蟲程序部署在機群內的每臺電腦上進行執行爬取任務,最終將所有的數據進行
分布式爬蟲的作用
提高爬取效率
分布式爬蟲的簡單實現
由于原生scrapy的五大組件的不能實現共享,數據無法整合,所以必須通過scrapy和scrapy_redis組件結合進行實現
Scrapy_redis組件
作用:
給原生scrapy框架提供可以被共享的管道和調度器
實現流程
1、基于CrawlSpider創建一個項目:爬取陽光網信息
2、修改爬蟲文件:
- 導包 from scrapy_redis.spiders import RedisCrawlSpider ,讓爬蟲類繼承” RedisCrawlSpider“類
- 注釋 allowed_ddomainx和 start_urls,添加新屬性: redis_key = "name" # name為被共享的調度器隊列的名稱
- 完成數據解析代碼編寫
3、修改配置文件:settings.py
- 設置管道類為可以被共享的管道,即scrapy_redis中的管道類 ITEM_PIPELINES = { 'scrapy_redis.pipelines.RedisPipeline':300 ,}
- 設置調度器:
# 增加一個去重容器配置,作用:使用Redis的Set集合存儲請求的數據,從而實現去重數據的持久化 DUPEFILTER_CALSS = "scrapy_redis.dupefilter.REPPDupeFilter" # 使用scrapy_redis的調度器 SCHEDULER = "scrapy_redis.scheduler.Scheduler" # 配置調度器是否持久化,即爬蟲結束后,是否清除Redis中的請求隊列和去重指紋數據,為True時,表示不再對爬取過的數據進行爬取 SCHEDULER_PERSIST = True
4、配置redis的配置文件: redis.conf
# 關閉ip訪問限制 #bind 127.0.0.1 ::1 # 關閉保護模式 yes:其他客戶端只能讀取不能寫入數據 no:可讀可寫 protected-mode no
5、啟動redis-server
redis-server 配置文件
scrapy_redis組件安裝 : pip install scrapy_redis
由于我們需要使用scrapy_redis組件的實現共享管道和調度器,所以需要繼承scrapy_redis中的” RedisCrawlSpider“類
from scrapy_redis.spiders import RedisCrawlSpider class FbsSpider(RedisCrawlSpider): pass
將起始url和域名列表進行注釋,添加參數:
# allowed_domains = ['www.xxx.com'] # start_urls = ['http://www.xxx.com/'] redis_key = "sun" # sun為任意設置

浙公網安備 33010602011771號