设计和实现高水平分布式网络爬虫

本人翻译,原创,转载务必注明:哈尔滨工程大学李海波

   

 设计和实现高水平分布式网络爬虫

摘要:纵观网络搜索引擎和其他特殊的搜索工具一样,依赖网络蜘蛛区获得大规模的网页进行索引和分析。这样的网络爬虫会与数以百万计的主机在一定时期或者一周内进行交互。因此随之产生的健壮性、灵活性和可管理性等问题。另外,I/O性能、网络资源和操作系统的限制也会在设计高性能爬虫的时候进行合理的考虑。

    本论文描述和设计了分布式网络爬虫运行在工作站上。网络爬虫的能够在一秒钟之内爬取几百页网页,并防止崩溃或者其他不可预测的事情。并且能够满足大部分的网络爬虫的应用。我们设计了这个系统的软件架构,讨论其性能瓶颈,并且用足够的技术去实现其高性能。我们将实验结果附加在后面。

简介

   万维网于1993年的几千个网页,增长到了现在的20亿网页。因此爆炸性的规模的增长,WEB搜索开始成为挖掘信息最为重要的手段。这些搜索引擎靠网络爬虫大规模的手机网页,通过超级链接遍历网页并在大容量的数据库中检索网页并稍微为用户执行高效的查询检索。很多人多年来一直在关注WEB搜索技术,包括爬取策略、存储、索引和排序技术,还有重要的量化工作如WEB结构分析和WEB图。

   因此高性能的爬虫系统需要顺序的下载成千上万的WEB网页。实际上搜索引擎之间主要的区别在于大小和她们使用的数据库,附加上质量和排序函数的响应时间。尽管最大的搜索引擎,例如google或者altavista,目前仅仅能够覆盖一部分WEB网页,并且大部分她们的数据是几个月前已经过时的。(我们注意到,爬取速度并非是唯一的搜索引擎的瓶颈,查询的规模和响应时间也是主要的问题)。

  大规模搜索引擎的网络爬虫有两个问题。首先,要有良好的爬取策略,这个策略就是决定什么样的网页首先爬取。其次,她能够拥有优异的体系结构趋在每秒钟之内下载大规模的网页,并且能够防止崩溃、可管理、对资源的考虑和WEB服务器。这里第一个问题引发了学术的研究兴趣,包括首先爬取重要的网页,爬取特殊的话题和特殊类型的网页,重新爬取被刷新的网页,或者一定时间段内的爬虫的排序。

  相反的,第二个问题的工作确实很少的。显然的,所有的搜索引擎系统都有高度优化的爬虫,尽管这些系统的细节通常是保密的。唯一的公布细节的就是Mercator,这个是被AltaVista使用的。(另外谷歌的第一版的设计细节也公布了,和Internet Archive的系统)这些很容易构建一个缓慢的爬虫下载少量的网页。构建一个高性能的系统能够每秒下载数百万计的网页,在设计上提出了巨大的挑战。

  大部分近期的网络爬虫策略并不关注这些性能问题,相反,尽量减少网页被下载的必须网页数,或者最大化获取网页的利益。(一个例外是考虑系统的性能关注于爬虫的,在于构建通用的数据库系统,尽管这种体系的效率仍然低于大规模网络爬虫)。以上应用的考虑均是非常有限的贷款下。然而,在大规模的搜索引擎,我们需要合并的良好的爬取策略和优化的体系设计。

  在这篇论文中,我们描述和设计实现了一个基于网络工作站的优化系统。爬取策略和我们的工作是正交的。我们描述这个系统使用典型的简单的宽度优先搜索,尽管系统可以使用其他的办法。我们主要的兴趣在于I/0和网络效率方面,并且在分布式的爬取的可扩展性上包括爬取速度和参与的节点。我们使用爬虫去获取大规模的数据集,去提供给WEB搜索技术例如索引、查询过程和链接分析。我们注意到高性能爬虫并没有被学术研究者重视,尽管有些群体做了一系列的实验。这里依旧有许多有趣的问题在实际的海量数据集应该受到学术界的更加重视。

1.1 爬行程序应用

每个爬虫爬取网页的方法都是一道亮丽的风景线。我们现在描述一些爬虫典型的爬去策略:

  宽度优先爬取:为了构建主要的搜索引擎或者大规模的网络存档栈,高性能爬虫的爬取开始于小的网页集合,并且遍历其他超级链接,采用宽度优先的方式。实际上,网页并不是严格按照宽度优先遍历的,因为会使用各种各样的爬取策略,比如对于一个WEB站点进行修剪,或者优先爬取更重要的网页。

  重新更新

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
首先,简单介绍下网络爬虫   网络爬虫是通过网页的链接地址来寻找网页,从网站某一个页面(设置为主页)开始,读取网页的内容,找到网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到这个网站所有的网页都抓取完为止。实际上,由于抓取技术的限制以及存储技术、处理技术的限制,要完全抓取网站的所有网页是不可能的,也是不实际的!本着从用户需要为出发点,实际需要抓取的网页往往是有限的,只需抓取符合用户要求的网页即可! 抓取网页的策略 在抓取网页的时候,网络爬虫一般有两种策略(即两种搜索方法),广度优先和深度优先。 广度优先:是指网络爬虫会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页,继续抓取在此页面中链接的所有页面。这是最常用的方式,广度优先的搜索策略可以并行处理,提高抓取速度。 深度优先:是指网络爬虫会从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。这种策略较易实现,但是抓取速度慢。 由于一般不可能抓取网站的所有链接,一般会设置访问层数,即搜索深度。起始页的深度为0,起始页中的链接url深度为1,依此类推。 构造C#语言的爬虫程序 C#已经封装了HTTP访问和多线程,这对编写网络爬虫提供了方便,而要C#网络爬虫程序需要解决以下问题: HTML分析:需要某种HTML解析器来分析爬虫程序遇到的每一个页面。 页面处理:需要处理每一个下载得到的页面。下载得到的内容需要保存起来,以便进一步分析处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值