什么是scrapy_redis
scrapy_redis:Redis-based components for scrapy
github地址: github.com/rmax/scrapy…
scrapy-redis
是一个用于分布式爬虫的扩展库,它将 Scrapy 框架与 Redis 数据库结合在一起,使得多个 Scrapy 爬虫实例可以在分布式环境中协同工作。这个扩展库的主要目的是提高爬虫的效率和可扩展性,特别是在处理大量数据或需要多台机器协作的情况下。
-
分布式爬虫:
- 允许多个 Scrapy 爬虫实例共享同一个任务队列(存储在 Redis 中),从而实现分布式爬取。
- 支持动态添加或移除爬虫节点,方便根据需求进行扩展。
-
去重:
- 使用 Redis 的集合(Set)来存储已爬取的 URL,避免重复爬取相同的页面。
- 提供多种去重策略,可以根据具体需求选择合适的去重机制。
-
调度器:
- 替换 Scrapy 默认的调度器,使用 Redis 作为请求队列。
- 支持不同的队列实现,如先进先出(FIFO)、先进后出(LIFO)等。
-
持久化:
- 将请求队列和去重集合存储在 Redis 中,即使爬虫停止或重启,状态也能保持一致。
- 支持断点续爬,提高了爬虫的健壮性。
-
监控:
- 提供了一些工具和接口,方便监控分布式爬虫的状态和性能。
- 可以查看当前正在处理的任务、已完成的任务数量、待处理的任务数量等信息。
运行网站中的example-project
allowed_domains = ["dmoz-odp.com"]
start_urls = ["https://www.dmoz-odp.com/"]
settings.py
文件中添加
REDIS_URL = "redis://127.0.0.1:6379"
运⾏结束后redis中多了三个键
dmoz:requests 存放的是待爬取的requests对象
dmoz:item 爬取到的信息
dmoz:dupefilter 爬取的requests的指纹