在CentOS中配置所有python运行环境:

如果Centos的yum源没有更改,修改为阿里云的yum源

https://www.cnblogs.com/windrunner9527/p/12185694.html

安装所需要的环境

yum -y install gcc gcc-c++ kernel-devel

如果本地有安装anaconda也需要安装anaconda

https://blog.csdn.net/mysteryflower/article/details/93064195

导入项目中的包

在cmd中进入项目目录下执行以下命令

pip freeze > requirements.txt

会在项目目录下生成一个当前项目所使用的的环境的文本文件,传给爬虫服务器

在Centos中创建需要的Python虚拟环境

https://blog.csdn.net/qq_41865652/article/details/85100264

安装项目所需要的包

pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

修改Scrapy项目变成Scrapy-redis项目:

  1. 将爬虫的类从scrapy.Spider变成scrapy_redis.spiders.RedisSpider;或者是从scrapy.CrawlSpider变成scrapy_redis.spiders.RedisCrawlSpider。

修改为

  • 将爬虫中的start_urls删掉。增加一个redis_key=”xxx”。这个redis_key是为了以后在redis中控制爬虫启动的(通过key来读取URL)。爬虫的第一个url,就是在redis中通过这个发送出去的。

修改为

  • 在配置文件中增加如下配置:

在settings.py中修改

启动爬虫:

爬虫服务器端:

进入项目的spiders文件夹下

通过scrapy runspider 爬虫名运行爬虫出现等待log

Redis服务器端:

爬虫启动,注意:fang:start_urls就是之前的redis_key

在Redis Desktop Manager中可以看到爬取成果

在redis中添加的三个键:

爬虫名:requests:调度器队列,存放的是待请求的requests对象,获取过程是一个pop操作即获取一个删除一个

爬虫名:items:存放获取到的item信息,在pipeline中开启RedisPipeline才会存入

爬虫名:dupeflter:指纹集合,存放的是已经进入调度器队列的requests对象的指纹,指纹默认由请求方法,url和请求体组成,指纹生成的方式hashlib.sha1()函数