返回介绍

15.1 分布式爬虫原理与 Redis 的安装

发布于 2025-04-21 19:15:31 字数 2146 浏览 0 评论 0 收藏

15.1.1 Scrapy 分布式爬虫原理

分布式爬虫也就是集群爬虫。当遇到大型的爬虫任务时,单台计算机是难以满足抓取需求的,毕竟单机有 CPU、IO、带宽等多重限制,这时可以尝试分布式爬虫扩展性能,从而使爬虫更快、更高效。当然可以在不同机器上运行不同网站的爬虫代码,最后把爬取到的数据汇总起来,这种方式虽然不算是分布式爬虫,但确实是爬取多个网站时较好的解决办法。本节所讲的分布式爬虫是一个整体的框架,是多台计算机的联合数据采集,这就涉及爬取任务的分配、URL 的统一去重及数据的统一或分散保存。下面具体看一下,如何用 Scrapy 实现分布式爬虫。

在第 11 章 Scrapy 架构解析中讲过,Scrapy 通过调度器调度待爬取的 URL,调度器可以被看作一个优先级队列,它接受 Request 并将它们入队,Scrapy 引擎从调度器中请求要爬取的任务。要实现分布式爬虫的统一任务调度和 URL 统一去重,一种常见的思路就是多服务器使用同一个调度器,这个处于核心位置的调度器主要完成调度所有其他服务器、URL 统一去重、共享爬取队列等任务。图 15-1 所示为分布式爬虫的架构。

图 15-1 所示的是一个简单的分布式爬虫,调度服务器处于核心位置,需要维护整个的爬取队列并统一去重。调度服务器的爬取队列一般通过 Redis 数据库维护。Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持久化的日志型、非关系型、Key-Value 数据库,其结构十分灵活。Redis 是内存中的数据结构存储系统,处理速度快,提供队列集合等多种存储结构,方便队列维护。

图 15-1 分布式爬虫的架构

Redis 提供了集合数据结构,调度服务器借助 Redis 集合实现 URL 去重。用户可以在 Redis 集合中存储每个 Request 的指纹(所谓指纹,就是标志 Request 唯一性的多个特征),从而判断 Reqeust 是否已经加入了队列,如果已经加入,就不再重复添加。

15.1.2 Redis 的安装

要安装 Redis,Linux 和 Mac 操作系统可以从 Redis 官网下载解压后编译安装。对 Windows 系统,Redis 官网并没有提供下载安装版本,可以从其他网站下载。

下载后解压到硬盘根目录,如 C 盘 Redis 目录下。然后在运行中输入 cmd,把目录指向解压的 Redis 目录,输入如下启动命令。

>redis-server redis.windows.conf 

如果看到图 15-2 所示的启动页面,说明成功运行了 Redis。

图 15-2 Redis 启动页面

上面虽然启动了 Redis,但是只要关闭 cmd 窗口,Redis 就会停止运行,所以要把 Redis 设置成 Windows 下的服务。把命令行目录指向解压的 Redis 目录,输入如下命令。

>redis-server --service-install
redis.windows-service.conf --loglevel verbose 

执行命令之后如果没有报错,表示成功添加了服务,可以在 Windows 服务中看到已经添加了 Redis,如图 15-3 所示。

图 15-3 添加 Redis 到 Windows 服务

可以使用如下命令开启 Redis 服务。

>redis-server --service-start 

要停止服务,可输入如下命令。

>redis-server --service-stop 

运行结果如图 15-4 所示。

图 15-4 开启和停止 Redis 服务

这样就完成了 Redis 的简单安装和部署,更深入的使用请参考 Redis 中文网教程。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。