scrapy分布式爬虫scrapy_redis一篇,可编程控制技术基础知识

Scrapy是一个强大的Python爬虫框架,但是在大数据爬取时,单机爬虫无法满足需求。因此,爬虫集群、分布式爬虫成为了可选方案。scrapy_redis是常用的Scrapy分布式爬虫框架,它基于Scrapy和redis,可以支持高并发、分布式爬虫,提高爬取效率。

Scrapy_redis架构

Scrapy_redis架构如下图所示:

![Scrapy_redis架构图](https://img-blog.csdn.net/20180731170523909?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2luZGV4X2Jsb2c=)

Scrapy_redis分为master和slave两个部分。master部分包括Scheduler、Duplication Filter和Redis Server。Scheduler接收spider发来的请求,然后放入Redis Queue中。当slave抓取到新的数据时,将数据返回给Redis Server。如果有重复的请求,Duplication Filter会剔除它们。slave端包含Downloader和spider。Downloader从redis server中取出请求,下载并把结果存入redis server。spider从redis Queue中取出请求,构成需要爬取的URL,通过start_urls搭建请求。

Scrapy_redis的优点

1. 高度可扩展:基于分布式进行开发,使Scrapy_redis很容易通过增加机器来支持整个网站优化抓取。

2. 支持自定义分布式爬虫:Scrapy_redis可以让用户自定义它们自己的分布式抓取策略。抓取策略是指定如何抓取和存储抓取数据的一种方式。

3. 支持各种存储方式: Scrapy_redis支持多种分布式存储方式,如redis、MongoDB等。这使得它非常灵活可以根据不同的需求来使用不同的存储方式。

Scrapy_redis的使用

1. 安装Scrapy_redis:可以通过pip install scrapy_redis来安装,或通过github源码下载并安装。

2. 创建Scrapy工程:可以通过startproject来创建,比如:

```

scrapy startproject myproject

```

3. 修改settings.py:需要在其中加入如下代码:

```

SCHEDULER = "scrapy_redis.scheduler.Scheduler"

DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"

ITEM_PIPELINES = {

'scrapy_redis.pipelines.RedisPipeline': 300

}

SCHEDULER_PERSIST = True

REDIS_HOST = 'localhost'

REDIS_PORT = 6379

```

4. 构建spider:

```

import scrapy

from scrapy_redis.spiders import RedisSpider

class MySpider(RedisSpider):

name = 'myspider'

redis_key = 'myspider:start_urls'

def parse(self, response):

# do something here

pass

```

5. 运行爬虫:首先需要启动redis-server,然后通过如下命令启动爬虫:

```

scrapy crawl myspider

```

如果要启动多个爬虫进程,需要使用如下命令:

```

scrapy crawl myspider -s JOBDIR=crawls/spider1

```

6. 监视分布式爬虫:通过在redis-cli中执行如下命令来查看Redis中的URL和response:

```

lrange mysider:items 0 10

lrange mysider:requests 0 10

```

通过如上命令可以检视scrpay_redis的运行状态。

总结

Scrapy_redis是基于Scrapy的分布式爬虫,桥接Redis和Scrapy,使得Scrapy表现出良好的扩展性,灵敏度非常高。Scrapy_redis的启动过程比传统爬虫的启动过程更加复杂,但总的来说Scrapy_redis的可扩展性、性能、灵活性和可靠性都非常高,非常适合爬取数据量大、需要分布式爬虫的网站。

购买后如果没出现相关链接,请刷新当前页面!!!
链接失效的请留言 ,我看见了就补上!!!

网站内容来源于互联网,我们将这些信息转载出来的初衷在于分享与学习,这并不意味着我们站点对这些信息的观点或真实性作出认可,我们也不承担对这些信息的责任。
适度游戏益脑,沉迷游戏伤身。 合理安排时间,享受健康生活。适龄提示:适合18岁以上使用!

点赞(22) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿
发表
评论
返回
顶部