网络爬虫的优化策略探略
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
收稿日期:2011-08-15
作者简介:李志义(1968-),男,副教授,硕士,研究方向:搜索引擎、电子商务网站开发等,发表论文20余篇,出版专著1部。
#理论探索#
网络爬虫的优化策略探略
李志义
(华南师范大学经济与管理学院,广东广州510631)
1摘 要2网络爬虫对网页的抓取与优化策略直接影响到网页采集的广度、深度,以及网页预处理的数量和搜索引擎的质量。搜索引擎的设计应在充分考虑网页遍历策略的同时,还应加强对网络爬虫优化策略的研究。本文从主题、优先采集、不重复采集、网页重访、分布式抓取等方面提出了网络爬虫的五大优化策略,对网络爬虫的设计有一定的指导和启迪作用。
1关键词2网络爬虫;优化策略;搜索引擎
DOI:10.3969/j.issn.1008-0821.2011.10.0071中图分类号2TP391
1文献标识码2A
1文章编号21008-0821(2011)10-0031-05
Discussion on the Optimization Strategy of Web Crawlers
Li Zhiyi
(School of Economic and Management,South China Normal University,Guangzhou 510631,China)
1Abstract 2Web crawlers for collecting web pages and its optimization strateg ies affected directly on the breadth,dep th of Web crawling,and also on web-page preprocessing and the search en g ine quali ty.Search engine should be designed taking full account of web traversal strategy and the web crawler opti mization strategy.In this paper ,the theme collection s trategy,priori ty acquisi tion strategy,not to repeat the acqui sition strategy,websi te re -visi t strategies,distributed capture strategy for the five major op timization strategies are proposed.These studies should be the guidance and inspiration to design of network crawlers.
1Key words 2web crawler;optimization strategy;search engine
网络爬虫的实质是一种用于从互联网上下载Web 信息的计算机程序,它以Web 页之间的相互链接为路径,依照一定的遍历策略试图爬行互联网中的每个链接,从中抓取必要的信息,并将其转存到本地存储设备上,以便进行信息的预处理。
网络爬虫的特点非常突出,主要表现为:(1)程序的
强壮性非常高,且具备超强的执行力;
(2)自动性和智能
性强,体现在分析Web 页和利用链接进行爬行等方面;(3)能够自动将Web 信息实施简单的存储操作等等[1]。与此同时,一个高性能的网络爬虫还需要从可伸缩性、分布式、/礼貌0爬行以及可定制性等方面进行完善和改进。本文着重探讨网络爬虫的优化策略。
1 网络爬虫的遍历策略
Google 、百度等通用搜索引擎抓取Web 页的数量通常
以亿为单位来测算,如此众多的网页文件自然涉及到网络爬虫遍历策略的问题。也就是说,通过何种方式或策略才能使网络爬虫尽可能地遍历所有Web 页,从而尽可能地扩大Web 信息的抓取覆盖面,这一直是搜索引擎研究的重点。从目前来看,通用网络爬虫主要采纳了3种基本策略)))广度优先策略和深度优先策略和最佳优先搜索策略[2],这些遍历算法虽然人们早已熟知,却非常适合于网络爬虫对网页的自动采集和获取。
111 广度优先遍历策略
广度优先遍历策略[3],可理解为一种基于网络层次分析的遍历策略,是将网络划分成若干层次,其中,种子站点是处于结构的最顶层。在遍历时,需要处理Web 页之间的抓取优先级的问题,一般规定层次结构中层次越高,优先级也就越高;同一层次中,从左到右优先级依次降低。因此,如果只用一个网络爬虫进行遍历操作,那么就按不
同层次之间先高后低的次序,以及同层次之间先左后右的次序进行。当然,也可以将多个网络爬虫设计成分布式的结构,它们分别负责其中一层或几层Web站点的遍历,这样不但技术实现的难度不高,而且可以较好地避免重复遍历Web页的现象。
112深度优先策略
深度优先遍历类似于树的前序遍历。它将遍历的侧重点放在网络爬虫爬行的深度上,往往为了抓取更多的Web 网页,允许网络爬虫访问站点中某一超链接相关的所有链接。从互联网的结构看,Web页之间通过数量不等的超链接相互连接,形成一个彼此关联、庞大复杂的有向图。所以,按照深度优先的原则,网络爬虫通常需要多次爬行一些Web页,即出现重复爬行现象。如何规避此类问题也就成为修正深度优先策略的重中之重,在实践中,一般会建立一个爬行路径优选算法来简化网络爬虫的行走路线,同时需要依照具体情况确保一个合适的遍历深度。
对比以上两种遍历策略,广度优先策略更适合大规模Web信息的搜集,可充分发挥网络爬虫程序算法的功效,适合水平型搜索引擎的信息抓取;而宽度优先策略一般适用于垂直搜索引擎的信息搜集。但在实际应用中,二者可相互嵌套。
113最佳优先搜索策略
它是按照一定的网页分析算法,预测候选URL与目标网页的相似度,或与主题的相关性,并选取评价最好的一个或几个URL进行抓取。它只访问经过网页分析算法预测为有用的网页。因此,这种算法可能导致在爬虫抓取路径上的很多相关网页被忽略,因为最佳优先策略是一种局部最优搜索算法。它需要将最佳优先结合具体的应用进行改进,以跳出局部最优点[4]。闭环调整可以将无关网页数量降低30%~90%。
2网络爬虫的优化策略
在网络爬虫抓取Web信息的过程中,无论是宽度优先策略还是广度优先策略,都可能产生重复抓取的现象,也难以处理好Web页的优先级顺序和对相同Web站点的不定期抓取等问题,因此,网络爬虫的设计还要进行适当、合理的改进,提升并优化网络爬虫的抓取策略。本文就此对现有网络爬虫技术进行了总结并提出以下5种主要的优化策略。
211不重复采集策略
不重复采集策略的实质是通过Hash函数存储网络爬虫的遍历轨迹,并规定某一Web页被遍历过,则在哈希表中的相应槽位填充1,否则填充0。也就是说,此类方式用1或0的值表示Web页是否被爬虫抓取过。在具体实现过程中,哈希函数起到至关重要的作用,目前一般使用MD5()函数,将网页文件的地址即URL字符串转换为128位散列值。
21111MD5算法
对MD5算法可简要叙述为:MD5以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由4个32位分组组成,将这4个32位分组级联后将生成1个128位散列值。
在该算法中,首先需要对信息进行填充,使其字节长度对512求余的结果等于448。即信息的字节长度MOD512 =448
因此,信息的字节长度将被扩展至N*512+448,N为1个正整数。填充的方法是:在信息的后面填充1个1和足够多的0,直到满足上面的条件时才停止用0对信息的字节长度进行填充。然后,在此基础上附加1个以64位二进制表示的填充前信息长度,即将原始信息的字节长填充为64位长度并添加进来。经过这两步的处理,长度恰好是512的整数倍。即信息字节长度=N*512+448+64=(N+ 1)*512
接着设置MD5中的4个32位被称作链接变量的整数参数,分别为:A=0x01234567,B=0x89abcdef,C= 0xfedcba98,D=0x76543210。
当设置好这4个链接变量后,就可进行算法的四轮循环运算。循环的次数是信息中512位信息分组的数目。21112哈希表
MD5就是将任意长度的消息转换成128位固定长度的消息摘要的函数,显然,MD5()函数产生的值很大,为2128个不同的数,需要的内存空间巨大。因此,在实际处理中还要将MD5()函数的值进行模运算映射到哈希表中。其公式可设为:
MD5(URL)MOD N
其中,URL为抓取的地址,N为存储哈希表的位长。
通过该式的转换,可使输入的URL地址被映射到大小为N的哈希表的某个位上,以便确定其地址是否被抓取过。
21113重复抓取的解决策略
为了解决重复搜集网页的问题,可以定义两个数据库: /未爬行的URL库0和/已爬行的URL库0。/未爬行的URL库0存储待访问队列的URL,/已爬行的URL库0存储已遍历过的URL。对于已访问过的、未访问过的URL利用MD5(URL)函数分别作MD5摘要,以获取其惟一标识,并建立两个集合。新解析出的URL,首先根据已经访问过