scrapy-Redis 分布式爬虫

抓取大量数据是时,一个机器爬取过于缓慢,所以需要多台机器一起进行爬取。

1. 使用scrapy框架搭建爬虫项目

创建爬取B站视频信息的scrapy爬虫项目

  1. middlewares.py文件
    设置中间件,定义随机的IP代理
    防止B站的IP屏蔽处理

scrapy-Redis 分布式爬虫

scrapy-Redis 分布式爬虫

2 pipeline.py文件
设置连接的数据库,保存采集数据,数据库的属性在settings文件设置。
scrapy-Redis 分布式爬虫

3 settings.py文件
scrapy项目的一般设置
scrapy-Redis 分布式爬虫
scrapy-Redis 分布式爬虫
scrapy-Redis 分布式爬虫
scrapy-Redis 分布式爬虫
scrapy-Redis 分布式爬虫

2.开发爬虫

scrapy-Redis 分布式爬虫
重写start_requests函数,实现生成起始路由列表
将得到数据由parse解析,传递给管道保存。

3. 现在开始将这个scrapy项目进行简单改成scrapy-redis分布式爬虫

1 settings文件设置
scrapy-Redis 分布式爬虫
这里是将调度器采用scrapy-redis库的调度,舍弃原本框架自己的,有Redis数据库实现,也是为了实现多个爬虫项目使用同一个调度器,实现Redis数据库统一调度。
2 更改爬虫文件
scrapy-Redis 分布式爬虫

1.引入scrapy-redis的爬虫类
2. 将爬虫继承scrapy-redis的爬虫类
3. 将start-urls舍去,改为redis-key,起始爬虫路由是由Redis数据库输入。
4. 新的路由由函数处理后产生。

3 启动爬虫

*1. 启动MongoDB数据库
mongod –dbpath 数据库路径。
*2.启动Redis数据库
进入数据库位置,进入cmd命令行(此处为Windows上)
redis-server.exe redis.windows.conf
*3.Redis数据库客户端连接
redis-cli.exe
*4. 启动scrapy-redis分布式爬虫项目
启动多个项目后,所有项目进入等待,等待用户从Redis推入起始路由。
*5.推入起始路由,爬虫开始运行
lpush myspider:start_urls 起始网页地址
爬虫开始运行。

scrapy-Redis 分布式爬虫