# DoubanSpider_distribution **Repository Path**: cix/douban-spider-distribution ## Basic Information - **Project Name**: DoubanSpider_distribution - **Description**: 采用手写的分布式架构实现豆瓣top250分布式爬虫 - **Primary Language**: Python - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2018-12-20 - **Last Updated**: 2023-10-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: Python, Spider ## README # DoubanSpider_distribution #### 介绍 采用手写的分布式架构实现豆瓣top250分布式爬虫 #### 软件架构 一、简单分布式爬虫架构 本次分布式爬虫采用主从模式,主从模式是指一台主机作为控制节点,负责管理所有运行网络爬虫的主机,爬虫只需要从控制节点那里接收任务,并把新生成任务提交给控制节点就可以了,在这个过程中不必与其他爬虫通信,这种方式实现简单、利于管理。而控制节点则需要与所有爬虫进行通信,因此可以看到主从模式是有缺陷的,控制节点会成为整个系统的瓶颈,容易导致整个分布式网络爬虫系统性能下降。 二、控制节点 控制节点主要分为 URL 管理器、数据存储器和被控制调度器。控制调度器通过三个进程来协调 URL 管理器和数据存储器的工作:一个是 URL 管理进程,负责 URL 的管理和将 URL 传递给爬虫节点;一个是数据提取进程,负责读取爬虫节点返回的数据,将返回数据中的 URL 交给 URL 管理进程,将标题和摘要等数据交给数据存储进程;最后一个是数据存储进程,负责将数据提取进程中提交的数据进行本地存储。 三、爬虫节点 爬虫节点相对简单,主要包含 HTML 下载器、HTML 解析器和爬虫调度器。执行流程如下: 爬虫调度器从控制节点中的 url_q 队列读取 URL。 爬虫调度器调用 HTML 下载器、HTML 解析器获取网页中心的 URL 和标题摘要。 爬虫调度器将新的 URL 和标题摘要传入 result_q 队列交给控制节点。