#########################################################################################################
修改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中