第一次写CSDN,不管是为了自己技术的提高,还是记录,分享的作用,都要开始自己的CSDN之旅了,话不多说上正文
问题:自己写了scrapy-redis的代码后,发现始终两台windows电脑之间始终无法实现连接,刚开始是ping不通,之后是ping通了,但是从机不能连接主机,后面才找到问题所在,所以现在把整个scrapy-redis的部署整理下来
1.肯定是实现爬取网站的代码,我的是用scrapy爬取企查查的代码,这个就不说了
2.把scrapy代码改装成scrapy-redis,这里有必要说下两者的区别,在我的理解中,他们的最核心的区别在于scrapy-redis多了一个状态管理器,这个状态管理器就是一个redis,细说就是多了4个组件:
Scrapy-redis 提供了下面四种组件(components):(四种组件意味着这四个模块都要做相应的修改):
Scheduler
这个是负责request的出队和入队的,是按照优先级做键的形式来区分的
Duplication Filter
这个是负责去重的,核心就是两个set,set1是用来存放request的,set2是用来存放指纹的,也就是加密过后的request,每次set1要去请求的时候,都要先sadd到set2中去判断下,如果结果为1,那么就代表没取过,如果结果为0,则代表之前已经取过了
Item Pipeline
这个是用来指明存放地方的
Base Spider
这个主要是改变爬虫文件的继承的类和把start_url改为redis_key的
3.详细的改装步骤
(一)首先安装redis数据库
https://github.com/MicrosoftArchive/redis/releases
安装这个的时候,要记住两点,第一是规避防火墙的哪个选项要选,第二是自动添加环境变量的选项要选
(二)安装redis之后,开启redis服务
可以直接去我的电脑-----管理(右键我的电脑)-------服务和应用程序里面的服务—之后开启redis
还可以直接进入redis的安装目录下,
用redis-server redis.windows.conf 命令来开启,这个开启了就不能关闭,关闭 了redis就连接不上了,后面要操作命令的话,最好另外打开一个cmd
这个就是开启的样子:
(三)打开redis文件夹找到redis.windows.conf文件,使用一个编辑软件打开,我这里用的是pycharm,经验之谈,改之前一定要复制一份最开始的保存
在里面要修改两个参数:
1.找到 bind 127.0.0.1 将其改为bind 0.0.0.0或者bind 主机ip,记住位置也不能错,不要改到另外的地方去了
不改这个的结果就是到时用redis-cli连接的时候,连接不上
2.关闭保护模式: 找到 protected-mode yes 将 yes 改为 no
不改这个的后果是从机连接以后,不能对主机的redis做任何的操作
3.关闭守护进程:找到下方图片所示的位置,在该位置上添加一句 daemonize yes,这个可以改可以不改
(四)到目前为止,关于redis的就完了,那么可以通过进入redis安装目录,进行redis-cli进行连接了,比如(前面可以参考这个链接https://blog.csdn.net/qq_42603652/article/details/81636883):
redis-cli -h 192.188.43.127,IP会自动连接到6379
补充一点,这里可能改过之后,还是连接不上,那么这个时候存在两种情况
一是防火墙的问题
可以参考这个链接
二是环境变量的问题
这个主要问题是在之前安装过redis,环境变量没改过来,所以不管之后怎么设置,还是没有作用
当然不可能让我们去蒙,看看是哪个出问题了,肯定有判断方法,看下面:
1.ping下看看主机和从机能不能链接上
ping 192.188.43.127
必须双方都能ping通
ping不通就是防火墙的问题
参考这个链接http://www.xitongtiandi.net/wenzhang/win10/30837.html
2.如果在本机上,这里我们以主机为例,主机上自己链接自己都不行
redis-cli -h 192.188.43.127没感觉,反而redis-cli -h 127.0.0.1一下成功了,这就表明是你的redis.windows.conf文件没改,如果改了没用,那么就去看看环境变量
3.如果本机上能行,比如redis-cli -h 192.188.43.127进去了,但是在从机上用这个命令链接不上,那么就代表肯定有东西在阻止链接,肯定就是防火墙了
可以参考这个链接
https://g.pconline.com.cn/x/610/6104698.html
(五)剩下的就是改造具体的代码了,可以参考下面的链接或者图片
https://blog.csdn.net/qq_42603652/article/details/81747713
到现在为止,整个分布式爬虫运行就可以了