搜索
您的当前位置:首页正文

scrapy-Redis分布式爬虫

来源:二三娱乐

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

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

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

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


      IP代理池
定义随机筛选IP
    1. pipeline.py文件
      设置连接的数据库,保存采集数据,数据库的属性在settings文件设置。


      连接MongoDB数据库
    1. settings.py文件
      scrapy项目的一般设置


      设置user-agent,禁止robot协议
      请求头的其他属性设置
      中间件代理IP的设置
      保存数据管道
      连接的MongoDB数据库属性

2.开发爬虫

具体爬虫文件

重写start_requests函数,实现生成起始路由列表
将得到数据由parse解析,传递给管道保存。

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

    1. settings文件设置


      添加设置

      这里是将调度器采用scrapy-redis库的调度,舍弃原本框架自己的,有Redis数据库实现,也是为了实现多个爬虫项目使用同一个调度器,实现Redis数据库统一调度。

    1. 更改爬虫文件


      爬虫文件

1.引入scrapy-redis的爬虫类

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

*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 起始网页地址
爬虫开始运行。

4个爬虫一起运行
Top