浅谈网络蜘蛛原理与实现
浅谈网络蜘蛛原理与实现
【摘要】
在当今计算机网络和互联网高度发展时期,各种各样的搜索引擎不断崛起。以Google、雅虎、百度、bing等著名的搜索引擎都提出各种搜索技术,方便广大网民在互联网上搜索自己需要的信息和资料。对于搜索引擎来说网络蜘蛛则是一个重要的组成部分,它能形象把庞大的互联网比作一个蜘蛛网,使得Spider能在这个网上不断爬行来获取网页的链接和其他的相关信息,那么我们很有必要来研究一下网络蜘蛛的原理与实现。
【关键字】网络蜘蛛、搜索引擎、Spider、网页、算法
一、前言
在计算机网络诞生之初,各种网站和信息量还是相对比较少,所以信息检索不是一个很难处理的问题。但是在互联网高度发展的今天,一般的互联网用户想通过自己的方法在互联网上查找到满意的信息如同大海捞针一样。因此,搜索引擎便油然而生了,当然网络蜘蛛程序却是搜索引擎中最为重要的环节,如何实现网络蜘蛛,就要了解其工作的原理,深入的探讨网络的实现算法。
二、网络蜘蛛的原理
1、网站结构
对于当前互联网的各种网站其基本结构都比较类似,基本都遵循一个树形结构,从网站的首页到最后的内容页面都存在一条途径。那么我们可以简单把网站中的每一个网页看作这颗树中一个节点,那么对于如何分析这些网页得出网页之间的联系,这对网络蜘蛛来说是一个重要的问题。
2、网络蜘蛛工作原理
网络蜘蛛是通过网页链接地址来寻找网页的,这必须要遵循网站结构来进行抓取,从一个网站某一个页面开始,通常来说这个页面也叫网站的入口。读取网页后,找到网页中的其他的超链接地址,然后再根据这些超链接地址进入下一个网页,因此不断的循环下去后把整个网站抓取完毕。通过这种循环可以构造出更大的环境,那就是整个互联网,也就是说通过网络蜘蛛,就可以将整个互联网上的所有网站都抓取完毕。
对于以上所描述的网络蜘蛛的原理不难看出,从目前互联网所公布网站的数目来看,是一个非常庞大的数目,而且每个网页信息都有一定的容量,假设一个网页平均的大小为50K计算,这里还要包括图片等媒体,对于上百亿的网页容量可以达到上百万GB的。如何存储?如何有充足的时间去抓取都是一些复杂的问题。
面对这些问题,对于网络蜘蛛来说就必须在抓取网页时候要有一个的策略,一般来说有两种策略:广度优先策略和深度优先策略。
广度优先策略:这种策略就是要求在网络蜘蛛在抓取一个网页后,继续对该网页中的链接网页进行抓取。这种方式可以让网络蜘蛛以并行的方式进行抓取,以提高抓取的速度,减少抓取时间。
深度优先策略:这就是要求网络蜘蛛在抓取一个网页链接后,进一步对下一个链接的网页进行抓取,不断的跟踪下去,直到网站最大深度为止,然后再处理其他链接的网页。这样的策略最大的优点就是实现算法比较简单,可以采用递归的方法进行设计。
三、网络蜘蛛与网站
网络蜘蛛如何对网站进行抓取,这需要很好的控制,因为网络蜘蛛在抓取网页的时候,不同于一般的访问,否则会对服务器造成严重的负担。那么就要求网站对网络蜘蛛的进入有一定的设置,比如:在网站根目录下投放一个robots.txt文件,专门用来同网络蜘蛛进行交互的文件。它主要的功能就是将网站管理员的意图传递给网络蜘蛛,告诉网络蜘蛛哪些页面可以访问,哪些网页不可以访问。而且这个文件的语法也是比较简单的,也可以将这文件看成一个网络约定协议而已,并没有其他的强迫手段,也能有效的屏蔽了不属于识别该文件的网络蜘蛛。
还有其他方法可以有效的引导网络蜘蛛对网站进行有效的抓取,比如:利用sitemap.xml文件,即网站地图。该文件可以看作网络蜘蛛的向导,能帮助网络蜘蛛顺利,快速的对网站进行遍历。而不会重复的抓取网页,和避免对无效网页抓取下来而造成的无谓的浪费。同时,这样也可以让网站设计来决定设计方案,让网络蜘蛛来遵循网站地图来抓取,让网站被搜索引擎所收录。
网站设计者还可以对网页中的Meta字段进行设置相应网络蜘蛛所识别的内容。比如:网页标题、网页关键字、网页描述等。这种设置也使有必要的,因为这样能友好的告诉网络蜘蛛该网页的相关信息,能网络蜘蛛更好识别出该网页的价值所在。
四、网络蜘蛛的设计
1、网络蜘蛛模块分析
根据网络蜘蛛抓取网页的过程的不同,可以将网络蜘蛛分成三个功能模块:网页读取模块,该模块主要功能是用来读取服务器上网页的内容;超链接分析模块,这个模块主要是用来分析所读取出来网页中的超链接,将网页中的所有的超链接提出出来,存放到一个链表当中;内容分析模块,这个模块主要功能是用来对网页内容进行分析,将网页中所能识别的内容保留,不需要的标志出掉。
2、网络蜘蛛工作流程
首先网络蜘蛛根据网站的入口读出网站入口网页内容,将网页上的网页超链接保存到URL链表中。然后判断链表是否为空,如果为空则代表站点为空,否则从URL链表中读取一个URL链接。再读出该URL对应网页内容进行抓取,通过分析把该网页的URL保存到URL链表当中。重复循环,直到URL链表为空时,就说明该网站所有网页都被抓取完毕。
3、网络蜘蛛所涉及到的技术
1) 多线程技术:对于一个大型网站来说,URL的数目必定是非常庞大的,如果采用单线程进行抓取,那么所花费的时间是很漫长。多线程技术则是一个网络蜘蛛所基本的技术手段,也就是说可以在需要时利用多个线程同时对一个网站的不同的网页进行抓取,以提高抓取的速度和效率。
2) 网页内容抓取技术:对于现行绝大部分的网页都是采用HTTP协议来进行传输的。当然,对于互联网上众多网页资源类型是也十分繁多的,比如:毕竟只存在HTML文件,还有WORD、PDF文档。所以在网络蜘蛛抓取网页内容时应当要首先判断网页的类型,根据网页的类型的不同进行分类和区分抓取,以避免不必要的错误。
3) 超链接分析技术:对于所有网站设计者并一定都按照同一种模式去设计自己网站,那么不同网站结构都有细微的变化,这种变化就能体现在超链接上。所以网络蜘蛛在对抓取出来的URL链接要进行全面的分析,不能重复的抓取,所以需要反复的测试,尽量多的考虑到网站的不同结构和情况,以应对各种网站的模式。
4、对于网络蜘蛛的优化
1) 实现自动化,对于上亿的网页,不仅仅是在速度上和效率上的要求,更重要的是减少人工的参与,尽可能的实现自动化。这不仅是体现在自动化抓取网页,还能体现在其他方面,比如:对异常的处理、日志的处理。以提高网络蜘蛛的智能化。
2) 使用多协议并发抓取,虽然HTTP是互联网网页的通信协议,但是还存在其他的一些。为了节约抓取时间和网络蜘蛛对网页命中的概率,可以考虑使用多协议并发的形式对网站的网页进行抓取。这样速度会更快,更能符合商业化网络蜘蛛的要求。
3) 建立域名缓冲机制,对于不同域名的解析,也是需要花费不少时间的,如果能建立域名缓冲机制,就可以减少由IP地址到域名的转换所花费的时间,避免重复域名解析,从而在一定程度上提高网络蜘蛛抓取网页的效率。
五、总结
伴随信息化的发展,商业化的搜索引擎发展也会成为将来互联网的主力军,这也决定了网络蜘蛛的发展方向,这就必须要进一步去研究网络蜘蛛的策略问题,这对搜索引擎必定会起到一个重要的作用。
六、参考文献:
[1] 爬虫算法设计与程序实现 杜亚军
[2] XML搜索引擎研究 王海波 2001 计算机应用研究
[3] 层次聚类与蚁群优化算法在目录搜索引擎中的应用 贾雪峰