纯属笔记
- 分布式: 一台电脑运行一个爬虫程序称为单机爬虫,将同一个爬虫放在多台电脑上或者同一台电脑的多个虚拟环境中,且同时启动这个爬虫就称为发布式
- 为什么要部署分布式爬虫:
- 当要进行大规模数据爬取时,一台电脑的爬取速度达不到要求,可以利用多台电脑来提高爬虫的爬取速度
-
配置
- pip install scrapy-redis (如果使用虚拟环境先进入虚拟环境再安装包)
-
scrapy中配置 settings :
- # 更换scrapy内置调度器文件, 使用scrapy_redis包中的scheduler调度器文件
- SCHEDULER = "scrapy_redis.scheduler.Scheduler"
-
# 更换scrapy内置的去重文件,使用scrapy_redis包中的dupefilter文件
-
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
-
配置redis_url (主机(用于分配url给从机去爬取信息和用于数据存储) 的IP)
-
REDIS_URL = 'redis://root:@***.***.***.***:***(IP加端口)'
-
主机配置redis:
- redis默认只支持localhost的本地连接, 远程连接需要配置 找到redis安装包 找到redis.windows.conf文件
- 将 bind 127.0.0.1 改成REDIS_URL中配置的IP
- 将protected-mode yes 中 yes该为no 关闭保护模式(在bind下面 看结尾部分)
- 修改完成后必须将redis服务从计算机服务(在菜单[win]中搜索 '服务' 打开后可查看redis服务情况) 中删除,然后重新注册到服务中(更新上面修改的配置 必须删除再重新注册)
- Windows下redis (redis安装包文件中 地址栏 输入cmd)
- redis-server --service-stop 停止服务
- redis-server --service-uninstall 卸载redis服务
- redis-server --service -install redis.windows.conf 注册为Windows服务(配置后redis可自启)
- redis-server --service-start 手动启动
-
爬虫文件:
- from scrapy_redis.spiders import RedisSpider
- 注释start_urls(由主机分配)
- 添加 redis_key = '****:start_urls'
- 更改***Spider()参数为RedisSpider
-
配置mysql:
- 主 :
- mysql -uroot -p 换行输入密码
- create user "user"@"%" identified by "123456";
- GRANT ALL privileges ON *.* TO 'user'@'%';
- 使用刚创建的账号密码在mysql中测试
- 根据mysql配置修改settings中的mysql数据库相关配置
- 主 :
-
启动redis客户端 输入
-
Redis-cli -h IP -p 端口 然后开启每台电脑的爬虫
-
Ipush jobbole:start_urls http://blog.fobbole.com/all-posts/ 开始
-