scrapy_redis分布爬虫

Scrapy_redisscrapy的基础上实现了更多,更强大的功能,具体体现在:reqeust去重,爬虫持久化,和轻松实现分布式

Scrapy-redis提供了下面四种组件(components)

Scheduler

Duplication Filter

Item Pipeline

Base Spider

来我们认识一下它的工作流程:

来来我们获取一下sceapy_redis的源代码:

git clone https://github.com/rolando/scrapy-redis.git

我们clone到的 scrapy-redis 源码中有自带的一个example-project项目,这个项目包含3个spider,分别是dmoz, myspider_redis,mycrawler_redis

运行第一个dmoz文件

这个爬虫继承的是CrawlSpider,它是用来说明Redis的持续性,当我们第一次运行dmoz爬虫,然后Ctrl + C停掉之后,再运行dmoz爬虫,之前的爬取记录是保留在Redis里的。其实它就是一个 scrapy-redis 版 CrawlSpider 类,需要设置Rule规则,以及callback不能写parse()方法。

运行第二个myspider_redis文件

这个爬虫继承了RedisSpider, 它能够支持分布式的抓取,采用的是basic spider,需要写parse函数。其次就是不再有start_urls了,取而代之的是redis_key,scrapy-redis将key从Redis里pop出来,成为请求的url地址。RedisSpider类 不需要写start_urls:

scrapy-redis 一般直接写allowd_domains来指定需要爬取的域,必须指定redis_key,即启动爬虫的命令,参考格式:redis_key = 'myspider:start_urls'根据指定的格式,start_urls将在 Master端的 redis-cli 里 lpush 到 Redis数据库里,RedisSpider 将在数据库里获取start_urls。

运行myspider_redis文件的命令可以使用scrapy runspider myspider_redis或者使用scrapy crawl myspider_redis 

在命令行端的redis-cli输入push指令,参考格式(指定起始url):

lpush myspider:start_urls +你要请求的起始url

要使用分布式 Scrapy_Redis Settings.py设置文件中需要做一下配置

这里表示启用scrapy-redis里的去重组件,不实用scrapy默认的去重

DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"

使用了scrapy-redis里面的调度器组件,不使用scrapy默认的调度器

SCHEDULER = "scrapy_redis.scheduler.Scheduler"

允许暂停,redis请求的记录不会丢失,不清除Redis队列,可以恢复和暂停

SCHEDULER_PERSIST = True

下面这些是request的队列模式

scrapy-redis默认的请求队列形式(有自己的优先级顺序)

是按照redis的有序集合排序出队列的

#SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderPriorityQueue"

队列形式,请求先进先出

#SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderQueue"

使用了栈的形式,请求先进后出

#SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderStack"

ITEM_PIPELINES = {

    'example.pipelines.ExamplePipeline': 300,

    'scrapy_redis.pipelines.RedisPipeline': 400,

}

指定要存储的redis的主机的ip,默认存储在127.0.0.1

REDIS_HOST = 'redis的主机的ip'

定要存储的redis的主机的port,默认6379

REDIS_PORT = '6379'

本地部署

用的是scrapyd包

是运行scrapy爬虫的服务程序,它支持以http命令方式发布、删除、启动、停止爬虫程序。而且scrapyd可以同时管理多个爬虫,每个爬虫还可以有多个版本

发布爬虫需要使用另一个专用工具,就是将代码打包为EGG文件,其次需要将EGG文件上传到远程主机上这些操作需要scrapyd-client来帮助我们完成

4.修改配置文件:

[deploy] url=http://localhost:6800 project=项目名称

5.本地部署:

scrapyd-deploy -p <项目名称>

也可以指定版本号

scrapyd-deploy -p <项目名称> --version <版本号>

6.远端部署:

step1 购买linux系统服务器

step2 在终端上登录服务器

step3 配置项目运行环境

虚拟环境   添加三方库:pymongo pymysql requests

step4 修改scrapyd的配置文件,允许外网访问

查找配置文件的路径:find -name default_scrapyd.conf

修改配置文件: sudo vim 路径

step5 要去服务器安全组配置

step6 最后部署爬虫项目到服务器:

[deploy] url = http://118.24.255.219:6800 project=项目名称

step7 项目部署

scrapyd-deploy -p <项目名称>

也可以指定版本号

scrapyd-deploy -p <项目名称> --version <版本号>

scrapy部署介绍相关的中文文档地址

https://scrapyd.readthedocs.io/en/latest/

爬虫运行相关命令

https://scrapyd.readthedocs.io/en/latest/api.html

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容