Scrapy框架之分布式操作
Posted xiugeng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Scrapy框架之分布式操作相关的知识,希望对你有一定的参考价值。
一、分布式爬虫介绍
分布式爬虫概念:多台机器上执行同一个爬虫程序,实现网站数据的分布爬取。
1、原生的Scrapy无法实现分布式爬虫的原因?
- 调度器无法在多台机器间共享:因为多台机器上部署的scrapy会各自拥有各自的调度器,这样就使得多台机器无法分配start_urls列表中的url。
- 管道无法给多台机器共享:多台机器爬取到的数据无法通过同一个管道对数据进行统一的数据持久出存储。
2、scrapy-redis组件
scrapy-redis是专门为scrapy框架开发的一套组件。该组件可以解决上述两个问题,让Scrapy实现分布式。
组件安装:
$ pip3 intall scrapy-redis
二、分布式爬取
1、redis配置和启动
(1)对redis配置文件redis.conf进行配置
- 注释该行:bind 127.0.0.1,表示可以让其他ip访问redis
- 将yes该为no:protected-mode no,表示可以让其他ip操作redis
# 不注释时,只允许本机的客户端连接
# bind 127.0.0.1
# yes改为no,关闭redis的保护模式,客户端可以对服务器进行读写操作
protected-mode no
(2)基于配置文件开启redis服务器
# MAC/Linux
$ pwd
/Users/hqs/redis-5.0.2
$ src/redis-server redis.conf
# windows
$ redis-server.exe redis-windows.conf
2、项目和爬虫创建
$ scrapy startproject redisPro
$ cd redisPro/
$ scrapy genspider -t crawl qiubai www.qiushibaike.com/pic/
这里运用CrawlSpider创建爬虫文件爬取全站图片数据。
3、爬虫文件编写
(1)引入scrapy-redis中的模块
在爬虫文件中要导入RedisCrawlSpider类,然后将爬虫文件修改成基于该类的源文件。
from scrapy_redis.spiders import RedisCrawlSpider
以上是关于Scrapy框架之分布式操作的主要内容,如果未能解决你的问题,请参考以下文章