Python基于scrapy-redis部署分布式爬虫

本文介绍了如何通过修改MySQL配置解决数据写入问题,并详细阐述了利用scrapy-redis部署分布式爬虫的步骤,包括设置Scrapy项目、配置redis连接、启动redis服务以及通过redis-cli添加初始URL来触发爬虫运行。
摘要由CSDN通过智能技术生成

#########################################################################################################
修改MySQL的my.ini文件,以MySQL8为例
路径在C:\ProgramData\MySQL\MySQL Server 8.0
找到sql-mode="STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION"这一行
把里面的STRICT_TRANS_TABLES,删除,逗号也删除,保存文件
修改过之后需要重启mysql服务
在windows命令窗口中使用net stop mysql80先停止服务,再使用net start mysql80启动服务
如果my.ini文件不修改,爬虫的数据写入不了数据库
#########################################################################################################

scrapy_redis第三方库实现分布的部署:

分布式爬虫:只需要在众多电脑中,选择其中一台开启redis服务,目的就是在redis中创建公用的queue和公用的set,
然后剩余电脑只需要连接redis服务即可,剩余电脑不需要开启redis-server服务。

一、使用命令pip3 install scrapy_redis
二、打开https://github.com/rmax/scrapy-redis
根据提供的用例,配置我们的项目,大致三部分:
1.settings.py文件;
SCHEDULER = “scrapy_redis.scheduler.Scheduler”
DUPEFILTER_CLASS = “scrapy_redis.dupefilter.RFPDupeFilter”
ITEM_PIPELINES = {
‘scrapy_redis.pipelines.RedisPipeline’: 300
}
# myroot: 自定义的redis链接。IP:开启redis-server服务的这台电脑的IP
REDIS_URL = ‘redis://myroot:@192.168.40.217:6379’

2.jobbole.py文件;
from scrapy_redis.spiders import RedisSpider
class JobboleSpider(RedisSpider):
	name = 'jobbole'
	allowed_domains = ['jobbole.com']
	# start_urls = ['http://blog.jobbole.com/all-posts/']

	# 添加键
	redis_key = 'jobbole:start_urls'

3.有关数据库MySQL部分,这里是8.0版本的写法;

第一步:通过mysql -uroot -p登录MySQL服务。

第二步:
    ①:创建用户create user myroot identified by '123456';(注意一定要带上分号)
	②:赋予权限grant all privileges on *.* to 'myroot'@'%';(注意一定要带上分号)
	如果需要删除用户请使用:drop user myroot@'%';(注意一定要带上分号)
# *.* 表示所有数据库中的所有表都能够被远程连接
# '%' 表示任意IP都可以进行链接
# 'myroot' 具有远程连接权限的自定义用户名,之后就使用这个用户连接数据库
第三步:再去修改爬虫项目中有关数据库的配置。 
MYSQL_HOST = '192.168.40.217'
MYSQL_DBNAME = 'article_db'
MYSQL_USER = 'myroot'
MYSQL_PASSWORD = '123456'
MYSQL_CHARSET = 'utf8'

三、将配置好的项目,拷贝到不同的机器中;

四、选择其中一台机器,开启redis-server服务
并修改redis.windows.conf配置文件,修改内容如下:

# 配置远程IP地址,供其他的电脑进行连接redis
bind: (当前电脑IP) 192.168.40.217

# 关闭redis保护模式
protected-mode: no

五、其中一台电脑启动redis-server服务

六、让所有爬虫项目都运行起来,由于没有起始的url,所有爬虫会暂时处于停滞状态

七、所有爬虫都启动之后,部署redis-server服务的电脑再打开一个命令窗口,输入redis-cli.exe -h 127.0.0.1 -p 6379连上服务端
连上之后会有127.0.0.1:6379>这样的字样提示,然后输入如下命令:
lpush jobbole:start_urls http://blog.jobbole.com/all-posts/
这个命令在作用是向redis的queue中添加起始的url

八、所有爬虫开始运行,爬取数据,同时所有的数据都会保存到该爬虫所连接的远程数据库以及远程redis中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值