分布式爬虫的意义
在这个高度信息化的时代,数据就代表可能性,无论是虚拟的还是现实的,掌握的数据越多,就代表拥有了更多的财富。那么如何获取数据,最方便的自然是利用Python这门语言得天独厚的优势去做爬虫,从网上去获取数据,但是数据这种动辄几百万几千万的数量级,怎么能在最短的时间获取最多的有效的数据,就要用到我们今天的主角-----分布式了。分布式的原理简单的说就是让一台计算机工作变成多台计算机协同合作,时间就是金钱,通过分布式我们可以节省大量的时间,提高了获取信息的效率。
分布式爬虫步骤
1.下载工具包scrapy_redis。(如果项目在虚拟环境下使用,需要先进入虚拟环境再下载,下同)
在命令行中输入pip install scrapy_redis即可,如果下载速度太慢,可以使用pip install -i https://pypi.douban.com/simple 工具包名,工具包就是需要要下载的包名字,在这里就是scrapy_redis。如下图所示。
2.打开项目,找到setting文件,配置scrapy使用的调度器和过滤器。
3.修改spider中的爬虫文件。
4.如果连接的有远程服务,例如MySQL,Redis等,需要将远程服务连接开启,保证在其他主机上能够成功连接,别忘了刷新权限,真是一点细节不能丢(;´༎ຶД༎ຶ`)
5.配置远程连接的MySQL及redis地址
6.运行爬虫。(要进入项目所在目录)
7.远程连接redis
打开命令行进入Redis目录然后输入redis-cli.exe -h 连接的主机ip 回车即可
如果出现无法连接的情况 一般是三种问题:
(1)防火墙开启,无法访问,解决方法:关闭防火墙。
(2)没有解除保护模式。
1)在远程服务器登录redis-cli
2)输入命令 config set protected-mode "no" 回车
(3)redis默认绑定127.0.0.1,也就是只允许本地访问,所以需要解除
1)到Redis安装目录打开redis.window.conf文件
2)修改bind127.0.0.1为bind 0.0.0.0
3)重新启动Redis服务器:redis-server redis.windows.conf
4)使用远程访问即可成功访问
流程步骤
(1)先把项目配置为分布式
(2)把项目拷贝到其余运行爬虫的服务器中
(3)把所有爬虫项目都运行起来
(4)在主redis-cli中lpush你的网址即可
注意事项
(1)分布式爬虫使用的代码应该是同一套代码
运行效果
所有爬虫都开始运行,并且获取的数据不重复