分布式爬虫总结

  • 原理
多台主机共享1个爬取队列
  • 实现
重写scrapy调度器(scrapy_redis模块)
  • 为什么使用redis
1、Redis基于内存,速度快
2、Redis非关系型数据库,Redis中集合,存储每个request的指纹
3、scrapy_redis安装
	sudo pip3 install scrapy_redis

Redis使用

  • windows安装
1、服务端启动 :cmd命令行 -> redis-server.exe
   客户端连接 :cmd命令行 -> redis-cli.exe
  • Ubuntu安装redis
# 安装
sudo apt-get install redis-server
# 启动
redis-server
# 连接
redis-cli -h IP地址

腾讯招聘笔记分布式案例

正常项目数据抓取(非分布式)
首先将项目以非分布式方式完成
改写为分布式(redis)
  1. settings.py
# 使用scrapy_redis的调度器
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
# 使用scrapy_redis的去重机制
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
# 在ITEM_PIPELINES中添加redis管道
'scrapy_redis.pipelines.RedisPipeline': 200
# 定义redis主机地址和端口号
REDIS_HOST = '172.40.91.129'
REDIS_PORT = 6379
改写为分布式(mongodb)
  • 修改管道
ITEM_PIPELINES = {
   'Tencent.pipelines.TencentPipeline': 300,
   # 'scrapy_redis.pipelines.RedisPipeline': 200
   'Tencent.pipelines.TencentMongoPipeline':200,
}
  • 清除redis数据库
flushall
  • 代码拷贝一份到Ubuntu(分布式中其他机器),两台机器同时执行此代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值