码迷,mamicode.com
首页 > 其他好文 > 详细

Scrapy框架之分布式操作

时间:2018-12-08 11:17:11      阅读:143      评论:0      收藏:0      [点我收藏+]

标签:网站   pip   bin   start   www   客户端   win   tar   模式   

一、分布式爬虫介绍

  分布式爬虫概念:多台机器上执行同一个爬虫程序,实现网站数据的分布爬取。

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框架之分布式操作

标签:网站   pip   bin   start   www   客户端   win   tar   模式   

原文地址:https://www.cnblogs.com/xiugeng/p/10086365.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!