随着互联网的发展壮大,人们获取信息的途径逐渐被网络所替代。互联网发展初期,人们主要通过浏览门户网站的方式获取所需信息,但是随着Web的急剧发展, 用这种方式寻找自己所需信息变得越来越困难。目前,人们大多通过搜索引擎获取有用信息,因此,搜索引擎技术的发展将直接影响人们获取所需信息的速度和质量。 1994 年世界上第一个网络检索工具Web Crawler 问世, 目前较流行的搜索引擎有百度、Google、Yahoo、Info seek、Inktomi、Teoma、Live Search 等。出于商业机密的考虑,现在各个搜索引擎使用的Crawler 系统的技术内幕一般都不公开,现有的文献资料也于概要性介绍。随着网络信息资源呈指数级增长及网络信息资源动态变化,传统的搜索引擎提供的信息检索服务已无法满足人们日益增长的对个性化服务的需求,正面临着巨大的挑战。以何种策略访问网络,提高搜索效率,已成为近年来专业搜索引擎网络爬虫研究的主要问题之一。 1、搜索引擎分类 搜索引擎按其工作方式主要分为全文搜索引擎、目录索引类搜索引擎和元搜索引擎三种。 1.1 全文搜索引擎 全文搜索引擎是名副其实的搜索引擎,通过从互联网上提取的各个网站信息(以网页文字为主)而建立的数据库中,检索与用户查询条件匹配的相关记录,然后按一定的排列顺序将结果返回给用户。 全文搜索引擎又可细分为两种:a)拥有自己的检索程序(Indexer),俗称“蜘蛛”(Spider)程序或“机器人”(Robot)程序,自建网页数据库,搜索结果直接从自身的数据库中调用。b)租用其他引擎的数据库,按自定的格式排列搜索结果。 1.2 目录索引型搜索引擎 与全文搜索引擎不同的是,目录索引型搜索引擎的索引数据库是由编辑人员人工建立起来的,这些编辑人员在访问过某个Web 站点后,根据一套自定的评判标准及主观印象做出对该站点的描述,并根据站点的内容和性质将其归为一个预先分好的类别,分门别类地存放在相应的目录中。用户在查询时,可以通过关键词搜索,也可以按分类目录逐层检索。 因为目录索引型的索引数据库是依靠人工来评价一个网站的内容,所以用户从目录搜索到的结果往往比全文检索到的结果更具有参考价值。实际上,目前很多的搜索网站都同时提供目录和全文搜索的搜索服务,尽可能为用户提供全面的查询结果。 1.3 元搜索引擎 元搜索引擎是将用户提交的检索请求送到多个独立的搜索引擎搜索,将检索结果集中统一处理,以统一的格式提供给用户,因此有搜索引擎之上的搜索引擎之称。它将主要精力放在提高搜索速度、智能化处理搜索结果、个性搜索功能的设置和用户检索界面的友好性上,其查全率和查准率相对较高。它的特点是本身没有存放网页信息的数据库,当用户查询一个关键词时,它将用户请求转换成其他搜索引擎能接受的命令格式,并行地访问数个搜索引擎来查询这个关键词,将这些搜索引擎返回的结果经过处理后再返回给用户。在搜索结果排列方面,有的直接按来源引擎排列搜索结果,有的则按自定的规则将结果重新排列组合。 2、网络爬虫技术 2.1 网络爬虫的工作原理 网络爬虫源自Spider(或Crawler、robots、wanderer)等的意译。网络爬虫的定义有广义和狭义之分,狭义的定义为:利用标准的http 协议,根据超级链接和Web 文档检索的方法遍历万维网信息空间的软件程序。广义的定义为:所有能利用http协议检索Web 文档的软件都称之为网络爬虫。 网络爬虫是一个功能很强大的自动提取网页的程序,它为搜索引擎从万维网下载网页,是搜索引擎的重要组成部分。它通过请求站点上的HTML 文档访问某一站点。它遍历Web 空间,不断从一个站点移动到另一个站点,自动建立索引,并加入到网页数据库中。网络爬虫进入某个超级文本时,利用HTML 语言的标记结构来搜索信息及获取指向其他超级文本的URL 地址,可以完全不依赖用户干预实现网络上的自动“爬行”和搜索。网络爬虫在搜索时往往采用一定的搜索策略。 2.2 网络爬虫的搜索策略 1)深度优先搜索策略 深度优先搜索是在开发爬虫早期使用较多的方法,它的目的是要达到被搜索结构的叶结点(即那些不包含任何超级链接的HTML文件)。在一个HTML文件中,当一个超级链接被选择后,被链接的HTML文件将执行深度优先搜索,即在搜索其余的超级链接结果之前必须先完整地搜索单独的一条链。深度优先搜索沿着HTML文件上的超级链接走到不能再深入为止,然后返回到某一个HTML文件,再继续选择该HTML文件中的其他超级链接。当不再有其他超级链接可选择时,说明搜索已经结束。其优点是能遍历一个Web站点或深层嵌套的文档集合。缺点是因为Web结构相当深,有可能造成一旦进去再也出不来的情况发生。 2)宽度优先搜索策略 在宽度优先搜索中,先搜索完一个Web页面中所有的超级链接,然后再继续搜索下一层,直到底层为止。例如,一个HTML 文件中有3个超级链接,选择其中之一,处理相应的HTML文件,然后不再选择第二个HTML文件中的任何超级链接,而是返回,选择第二个超级链接,处理相应的HTML文件,再返回,选择第三个超级链接,并处理相应的HTML文件。一旦一层上的所有超级链接都被选择过,可以开始在刚才处理过的HIML文件中搜索其余的超级链接。这保证了对浅层的首先处理。当遇到一个无穷尽的深层分支时,不会导致陷进WWW的深层文档中出不来的情况发生。宽度优先搜索策略还有一个优点,它能在两个HTML文件之间找到短路径。宽度优先搜索策略通常是实现爬虫的佳策略,因为它容易实现,而且具备大多数期望的功能。但是如果要遍历一个指定的站点或者深层嵌套的HTML文件集,用宽度优先搜索策略则需要花费较长时间才能到达深层的HTML文件。 综合考虑以上几种策略和国内信息导航系统搜索信息的特点,国内一般采用以宽度优先搜索策略为主,线性搜索策略为辅的搜索策略。对于某些不被引用的或很少被引用的HTML文件,宽度优先搜索策略可能会遗漏这些孤立的信息源,可以用线性搜索策略作为它的补充。 3)聚焦搜索策略 聚焦爬虫的爬行策略只跳出某个特定主题的页面,根据“好优先原则”进行访问,快速、有效地获得更多的与主题相关的页面,主要通过内容与Web的链接结构指导进一步的页面抓取。聚焦爬虫会给它所下载的页面一个评价分,根据得分排序插入到一个队列中。好的下一个搜索对弹出队列中的第一个页面进行分析后执行,这种策略保证爬虫能优先跟踪那些有可能链接到目标页面的页面。决定网络爬虫搜索策略的关键是如何评价链接价值,即链接价值的计算方法,不同的价值评价方法计算出的链接的价值不同,表现出的链接的“重要程度”也不同,从而决定了不同的搜索策略。由于链接包含于页面之中,而通常具有较高价值的页面包含的链接也具有较高价值,因而对链接价值的评价有时也转换为对页面价值的评价。这种策略通常运用在专业搜索引擎中,因为这种搜索引擎只关心某一特定主题的页面。
3、网络爬虫安全性问题 网络爬虫会占用网络带宽并增加Web服务器的处理开销,恶意用户甚至会利用爬虫程序对服务器发动Dos攻击。恶意用户还可能通过网络爬虫抓取各种敏感资料,主要表现在以下几个方面: 1)搜索目录列表:互联网中的许多Web服务器在客户端请求站点中某个没有默认页面的目录时,会返回一个目录列表。该目录列表通常包括一个描述当前目录的标题,可供用户点击的目录和文件链接,及一个脚注。因而通过抓取目录列表,恶意用户往往可获取大量有用的资料,包括站点的目录结构、敏感文件以及Web 服务器配置信息等等。 2)搜索测试页面、联机手册与样本程序:大多数Web 服务器软件附带了测试页面、联机手册与样本程序。这些文件往往会泄漏大量的系统信息,成为恶意用户剖析Web 服务器的工具,而且这些文件的存在也往往暗示网站的安全管理有问题,网站中存在潜在的安全漏洞。 3)搜索管理员登录页面:许多网络产品提供了基于Web的管理接口,允许管理员在互联网中对其进行远程管理与控制。如果管理员疏于防范,没有修改网络产品默认的管理员名及密码,一旦其管理员登录页面被恶意用户搜索到,网络安全将面临极大威胁。 4) 搜索互联网用户的姓名、电话、通信地址等个人信息,以便于实施社交攻击。 5) 搜集群发垃圾邮件所需的邮件地址。 6) 查找一个站点中的各种敏感文件,包括各种程序使用的配置文件、日志文件、密码文件、数据库文件等等。 7) 搜索Web 站点中存在缺陷的程序。 8) 获取互联网用户的信用卡密码,银行帐号等机密信息等等。 因此,采取适当的措施限制网络爬虫的访问权限,对于保持网站的正常运行、保护用户的隐私是极其重要的。 4、网络爬虫的新发展 传统的网络爬虫技术主要应用于抓取静态Web 网页,随着AJAX/Web2.0的流行,如何抓取AJAX 等动态页面成了搜索引擎急需解决的问题,因为AJAX颠覆了传统的纯HTTP 请求/响应协议机制,如果搜索引擎依旧采用“爬”的机制,是无法抓取到AJAX 页面的有效数据的。 AJAX 采用了JavaScript 驱动的异步请求/响应机制,以往的爬虫们缺乏JavaScript语义上的理解,基本上无法模拟触发JavaScript的异步调用并解析返回的异步回调逻辑和内容。 另外,在AJAX的应用中,JavaScript 会对DOM结构进行大量变动,甚至页面所有内容都通过JavaScript 直接从服务器端读取并动态绘制出来。这对习惯了DOM 结构相对不变的静态页面简直是无法理解的。由此可以看出,以往的爬虫是基于协议驱动的,而对于AJAX 这样的技术,所需要的爬虫引擎必须是基于事件驱动的。 参考文献: [1] 搜索引擎中网络爬虫技术的发展 王岩 电信快报 2008(10) [2] 网络爬虫技术的发展趋势 蔡笑伦 科技信息 2010(12) [3] 网络爬虫对网络安全的影响及其对策分析 梁雪松; 张容 计算机与数字工程 2009(12)