您的位置:首页 > 编程语言 > Python开发

python爬虫框架之Scrapy分布式的使用

2019-03-21 21:02 573 查看
版权声明:by——stx 有兴趣联系qq1152085232 https://blog.csdn.net/qq_43590972/article/details/88725616

分布式使用    

首先必须安装scrapy_redis组件

[code]pip install scrapy_redis

1、scrapy和scrapy_redis的区别

​        scrapy是一个通用的爬虫框架,不支持分布式

​        scrapy_redis就是为实现scrapy的分布式而诞生的,它里面提功了redis的组件,通过这些redis组件,就可以实现分布式

2、官网案例

​        http://github.com/rmax/scrapy-redis

​        三个样本

​        dmoz.py    传统的CrawlSpider,目的就是把数据保存在redis,运行方式        指令:scrapy crawl dmoz

​        myspider_redis.py 继承自RedisCrawlSpider,start_url被redis_key给取代了,其他地方不变

分布式爬虫开发的步骤:    

​    把原来普通的部署在分布式的系统上运行,就构成了分布式爬虫

​    1、环境部署

​        scrapy: 爬虫运行的基础  (如果服务端不参与分布式的爬取可以不装)

​        scrapy_redis :组件(也可以认为是scrapy和redis交互的中间件),用于把scrapy爬虫和redis数据库联系起来

​        redis服务器:用于存储分布式爬虫爬取到的数据,一般情况下我们将redis服务器部署在Linux系统上,Windows上也可安装(但是这个服务不能用于生产环境);无论是在Linux上还是在Windows上,都必须配置其能够远程访问

​    2、测试redis服务器是否联通

​        如果ping了不PONG

​        1)服务器没有配置远程连接

​        2)服务器崩溃

​        3)服务器出现冲突 config set stop-writes-on-bgsave-error no    

​        4)其他意外情况:http://www.baidu.com

​    3、在普通的scrapy爬虫框架下去爬取,保证爬虫爬取的数据没有错误再去分布式系统上部署

​        测试数据格式是否正确

​        先测:json   目的主要是看代码是否有误 【比如:用xpath的时候路径写错等】

​        再测redis  目的主要是看一下有木有系统级的错误 【如:redis服务器崩溃】

4、部署分布式

​    服务器端(master端):

​    可以用某一台主机作为redis服务器的运行方(即服务端),也称为master

​    客户端(slaver端):

​    1)把普通爬虫修改成分布式,去掉start_urls(不让slaver随意的执行),替换成redis_key(为了让master能够控制slaver的爬去)

    2)修改自己配置文件,即在配置文件中加上scrapy_redis的组件
    
5、爬取
    slaver端:首先要运行起来,等待master发出起始地址再开始
    master端:在适当的时候想redis服务器中放入一个起始地址的列表

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: