【论题】+【方案】网络爬虫实现避重、建库、
时效存储、时效展现和数据库的设计
论题时间:
2012-11-22
论题参与:
java 技术群(3 年以上) 95379959,所以成员
论题内容:
随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成
为一个巨大的挑战。搜索引擎(Search Engine),例如传统的通用搜索引擎 AltaVista,Yahoo!
和 Google 等,作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。
爬虫程序是一个自动获取网页的程序。它为搜索引擎从互联网上下载网页,是搜索引擎
的重要组成部分。爬虫程序的实现策略,运行效率直接影响搜索引擎的搜索结果。不同的搜
索引擎,会根据对搜索结果的不同需求,选择最合适的爬行策略来搜集互联网上的信息。高
效,优秀的爬虫程序可以使人们在互联网上寻找到更及时,更准确的信息。
覆盖率
网络蜘蛛的首要目标是抓取互联网上所需的信息。因此,有价值的信息是否都收录,收
录的比例(即覆盖率)是网络蜘蛛的基本评价指标。
时效性
用户对搜索引擎的查询要求越来越高,其中重要的一点就是查询时效性,即事件发生并
在互联网上传播后(以新闻、论坛、博客等各种形式),用户需要通过搜索引擎尽快能检索
到相应内容。而索引的前提是收录,因此需要网络蜘蛛尽快的抓取互联网上最新出现的资源。
重复率
互联网上重复的内容很多,如何尽早的发现页面重复并消除之,是网络蜘蛛需要解决的问题。
除转载导致的重复外,重复总能体现为各种不同的模式,站点级重复,目录级重复,CGI 级
重复,参数级重复等等。及早发现这些模式并进行处理,能节省系统的存储、抓取、建库和
展现资源。
目前几种比较常用的爬虫实现策略:广度优先的爬虫程序,Repetitive 爬虫程序,定
义爬行爬虫程序,深层次爬行爬虫程序。此外, 还有根据概率论进行可用 Web 页的数量估算,
用于评估互联网 Web 规模的抽样爬虫程序; 采用爬行深度、页面导入链接量分析等方法, 限
制从程序下载不相关的 Web 页的选择性爬行程序
方案一:
方案人:
北京-零度 J-4 年(469102165)
方案内容:
基于 Hash 算法的存储。
对每一个给定的 URL,用一个已经建立好的 Hash 函数,映射到某个物理地址上。当需要进
行检测 URL 是否重复的时候,只需要将这个 URL 进行 Hash 映射,如果得到的地址已经存在,
说明已经被下载过,放弃下载,否则,将该 URL 及其 Hash 地址作为键值对存放到 Hash 表中。
弊端:URL 去重存储库就是要维护一个 Hash 表,如果 Hash 函数设计的不好,在进行映射的
时候,发生碰撞的几率很大,则再进行碰撞的处理也非常复杂。而且,这里使用的是 URL