网格的特性使其能够支持广域网部署.
1.2 分布式爬虫的基本结构和工作流程
由于爬虫要下载多个网页,而各个网页的下载过程之间依赖性较小,因此可以被并行化.为了高效地下载网
页,爬虫程序一般被设计为多线程和多进程协同的方式,而分布式爬虫是将多个具有抓取网页功能的 Agent 分
别部署于多个计算资源之上的爬虫程序.以下是分布式爬虫中每个 Agent 的大致工作流程(其中,左侧带*号的
两行代码可能需要多机协同完成).为了突出 Agent 对 URL 的处理,算法描述省略了域名解析、对网页和 URL
的预处理以及解析网站的 Robots.txt 文件的过程.
URL Seen:用于存储已经抓取过的 URL.
URL 队列:用于存储待抓取的 URL.
输入:初始 URL 列表.
Agent (初始 URL 列表) {
将初始 URL 列表中的 URL 放入 URL 队列;
while (URL 队列不为空) {
从 URL 队列中取出一个 URL;
将 URL 存入 URL Seen;
下载 URL 指向的网页;
提取网页中含有的 URL;
for (每一个新发现的 URL) {
if (URL 应由本 Agent 负责) {
} else {
if (URL 不在 URL Seen 中 && URL 不在 URL 队列中)
将 URL 放入 URL 队列;
通过一定的 Web 划分方法选择负责当前 URL 的 Agent;
将 URL 发送至此 Agent;
*
*
}
}
1.3 广域网分布式Web爬虫的优势和挑战
广域网分布式 Web 爬虫与基于 LAN 的分布式爬虫或称局域网爬虫相比具有诸多优势:
(1) 可扩展性
可扩展性是局域网爬虫的致命缺点,也是提出广域网分布式爬虫的主要原因.首先,广域网系统能够容纳更
多的计算资源,拥有更多的网络接入点.理论上,整体吞吐量可以无限扩展;局域网爬虫因其计算资源数量受到
LAN 的限制,很难扩展到较大的规模,从而限制了系统整体吞吐量.其次,广域网系统是由若干个相对较小的机
群甚至单机节点组成,这使得资源添加和系统维护都变得相对简单.如果能够进一步利用分布在 Internet 上的个
人计算资源,则维护开销将大为降低;相比之下,在 LAN 中维护大规模机群的代价则非常昂贵,需要解决数据存
储、系统互连、机架结构、电源、散热等诸多问题.
(2) 多网络接入点
爬虫在抓取网页时,HTTP 请求和下载网页的过程需要占用系统网络接入点的大部分带宽.对基于 LAN 的
系统,随着机群规模的扩大,接入带宽将变为系统瓶颈.如果爬虫程序分布在不同的网络位置,就可以使用多个
网络接入点,理论上可以获得相当于这些接入点加和的总带宽.并且随着网络接入点数量的增加,系统的总带宽
也会相应增加,理论上带宽可以无限扩展.
}
}
1.2 分布式爬虫的基本结构和工作流程
由于爬虫要下载多个网页,而各个网页的下载过程之间依赖性较小,因此可以被并行化.为了高效地下载网
页,爬虫程序一般被设计为多线程和多进程协同的方式,而分布式爬虫是将多个具有抓取网页功能的 Agent 分
别部署于多个计算资源之上的爬虫程序.以下是分布式爬虫中每个 Agent 的大致工作流程(其中,左侧带*号的
两行代码可能需要多机协同完成).为了突出 Agent 对 URL 的处理,算法描述省略了域名解析、对网页和 URL
的预处理以及解析网站的 Robots.txt 文件的过程.
URL Seen:用于存储已经抓取过的 URL.
URL 队列:用于存储待抓取的 URL.
输入:初始 URL 列表.
Agent (初始 URL 列表) {
将初始 URL 列表中的 URL 放入 URL 队列;
while (URL 队列不为空) {
从 URL 队列中取出一个 URL;
将 URL 存入 URL Seen;
下载 URL 指向的网页;
提取网页中含有的 URL;
for (每一个新发现的 URL) {
if (URL 应由本 Agent 负责) {
} else {
if (URL 不在 URL Seen 中 && URL 不在 URL 队列中)
将 URL 放入 URL 队列;
通过一定的 Web 划分方法选择负责当前 URL 的 Agent;
将 URL 发送至此 Agent;
*
*
}
}
1.3 广域网分布式Web爬虫的优势和挑战
广域网分布式 Web 爬虫与基于 LAN 的分布式爬虫或称局域网爬虫相比具有诸多优势:
(1) 可扩展性
可扩展性是局域网爬虫的致命缺点,也是提出广域网分布式爬虫的主要原因.首先,广域网系统能够容纳更
多的计算资源,拥有更多的网络接入点.理论上,整体吞吐量可以无限扩展;局域网爬虫因其计算资源数量受到
LAN 的限制,很难扩展到较大的规模,从而限制了系统整体吞吐量.其次,广域网系统是由若干个相对较小的机
群甚至单机节点组成,这使得资源添加和系统维护都变得相对简单.如果能够进一步利用分布在 Internet 上的个
人计算资源,则维护开销将大为降低;相比之下,在 LAN 中维护大规模机群的代价则非常昂贵,需要解决数据存
储、系统互连、机架结构、电源、散热等诸多问题.
(2) 多网络接入点
爬虫在抓取网页时,HTTP 请求和下载网页的过程需要占用系统网络接入点的大部分带宽.对基于 LAN 的
系统,随着机群规模的扩大,接入带宽将变为系统瓶颈.如果爬虫程序分布在不同的网络位置,就可以使用多个
网络接入点,理论上可以获得相当于这些接入点加和的总带宽.并且随着网络接入点数量的增加,系统的总带宽
也会相应增加,理论上带宽可以无限扩展.
}
}