网络蜘蛛算法与蜘蛛程序构架

上传人:ni****g 文档编号:563066147 上传时间:2022-11-26 格式:DOCX 页数:11 大小:55.70KB
返回 下载 相关 举报
网络蜘蛛算法与蜘蛛程序构架_第1页
第1页 / 共11页
网络蜘蛛算法与蜘蛛程序构架_第2页
第2页 / 共11页
网络蜘蛛算法与蜘蛛程序构架_第3页
第3页 / 共11页
网络蜘蛛算法与蜘蛛程序构架_第4页
第4页 / 共11页
网络蜘蛛算法与蜘蛛程序构架_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《网络蜘蛛算法与蜘蛛程序构架》由会员分享,可在线阅读,更多相关《网络蜘蛛算法与蜘蛛程序构架(11页珍藏版)》请在金锄头文库上搜索。

1、网络蜘蛛算法与蜘蛛程序构架一、网络蜘蛛基本原理网络蜘蛛即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spider 就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的链接地址来寻找网页,从网站某一个页 面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链 接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如 果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓 取下来。对于搜索引擎来说,要抓取互联网上所有的网页几乎是不可能的,从目前公布的数据 来看,容量最大的搜索引擎也不过是抓取了整个网页

2、数量的百分之四十左右。这其中的原因 一方面是抓取技术的瓶颈,无法遍历所有的网页,有许多网页无法从其它网页的链接中找到; 另一个原因是存储技术和处理技术的问题,如果按照每个页面的平均大小为20K计算(包含 图片),100亿网页的容量是100x2000G字节,即使能够存储,下载也存在问题(按照一台 机器每秒下载20K计算,需要340台机器不停的下载一年时间,才能把所有网页下载完毕)。 同时,由于数据量太大,在提供搜索时也会有效率方面的影响。因此,许多搜索引擎的网络 蜘蛛只是抓取那些重要的网页,而在抓取的时候评价重要性主要的依据是某个网页的链接深 度。在抓取网页的时候,网络蜘蛛一般有两种策略:广度优

3、先和深度优先(如下图所示)。广度优先是指网络蜘蛛会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网 页,继续抓取在此网页中链接的所有网页。广度优先的抓取I阪序丁A-B.C.D.E.FH.G-I深度优先的孤取顺序匚A-F-GE-H-I由于不可能抓取所有的网页,有些网络蜘蛛对一些不太重要的网站,设置了访问的层数。例如,在上图中,A为起始网页,属于0层,B、C、D、E、F属于第1层,G、H属于 第2层,丨属于第3层。如果网络蜘蛛设置的访问层数为2的话,网页I是不会被访问到的。 这也让有些网站上一部分网页能够在搜索引擎上搜索到,另外一部分不能被搜索到。对于网 站设计者来说,扁平化的网站结构设

4、计有助于搜索引擎抓取其更多的网页。网络蜘蛛在访问网站网页的时候,经常会遇到加密数据和网页权限的问题,有些网页 是需要会员权限才能访问。当然,网站的所有者可以通过协议让网络蜘蛛不去抓取,但对于 一些出售报告的网站,他们希望搜索引擎能搜索到他们的报告,但又不能完全免费的让搜索 者查看,这样就需要给网络蜘蛛提供相应的用户名和密码。网络蜘蛛可以通过所给的权限对 这些网页进行网页抓取,从而提供搜索。而当搜索者点击查看该网页的时候,同样需要搜索 者提供相应的权限验证。二、网站与网络蜘蛛网络蜘蛛需要抓取网页,不同于一般的访问,如果控制不好,则会引起网站服务器负 担过重。每个网络蜘蛛都有自己的名字,在抓取网页

5、的时候,都会向网站标明自己的身份 网络蜘蛛在抓取网页的时候会发送一个请求,这个请求中就有一个字段为User-agent,用 于标识此网络蜘蛛的身份。例如Google网络蜘蛛的标识为GoogleBot, Baidu网络蜘蛛的标 识为BaiDuSpider, Yahoo网络蜘蛛的标识为Inktomi Slurp。如果在网站上有访问日志记录, 网站管理员就能知道,哪些搜索引擎的网络蜘蛛过来过,什么时候过来的,以及读了多少数 据等等。如果网站管理员发现某个蜘蛛有问题,就通过其标识来和其所有者联系。网络蜘蛛进入一个网站,一般会访问一个特殊的文本文件Robots.txt,这个文件一般放 在网站服务器的根目

6、录下,网站管理员可以通过robots.txt来定义哪些目录网络蜘蛛不能访 问,或者哪些目录对于某些特定的网络蜘蛛不能访问。例如有些网站的可执行文件目录和临 时文件目录不希望被搜索引擎搜索到,那么网站管理员就可以把这些目录定义为拒绝访问目 录。Robots.txt语法很简单,例如如果对目录没有任何*,可以用以下两行来描述:User-agent: *Disallow:当然,Robots.txt只是一个协议,如果网络蜘蛛的设计者不遵循这个协议,网站管理员 也无法阻止网络蜘蛛对于某些页面的访问,但一般的网络蜘蛛都会遵循这些协议,而且网站 管理员还可以通过其它方式来拒绝网络蜘蛛对某些网页的抓取。网络蜘蛛

7、在下载网页的时候,会去识别网页的HTML代码,在其代码的部分,会有META 标识。通过这些标识,可以告诉网络蜘蛛本网页是否需要被抓取,还可以告诉网络蜘蛛本网 页中的链接是否需要被继续跟踪。例如:表示本网页不需要被抓取,但是网页内的链接需要 被跟踪。 关于Robots.txt的语法和META Tag语法,前面的一篇禁止搜索引擎收录的方法”一文中 做了详细的介绍。现在一般的网站都希望搜索引擎能更全面的抓取自己网站的网页,因为这样可以让更 多的访问者能通过搜索引擎找到此网站。为了让本网站的网页更全面被抓取到,网站管理员 可以建立一个网站地图,即Site Map。许多网络蜘蛛会把sitemap.htm

8、文件作为一个网站网 页爬取的入口,网站管理员可以把网站内部所有网页的链接放在这个文件里面,那么网络蜘 蛛可以很方便的把整个网站抓取下来,避免遗漏某些网页,也会减小对网站服务器的负担(Google专门为网站管理员提供了 XML的Sitemap)三、网络蜘蛛对内容提取搜索引擎建立网页索引,处理的对象是文本文件。对于网络蜘蛛来说,抓取下来网页 包括各种格式,包括html、图片、doc、pdf、多媒体、动态网页及其它格式等。这些文件抓 取下来后,需要把这些文件中的文本信息提取出来。准确提取这些文档的信息,一方面对搜 索引擎的搜索准确性有重要作用,另一方面对于网络蜘蛛正确跟踪其它链接有一定影响。对于do

9、c、pdf等文档,这种由专业厂商提供的软件生成的文档,厂商都会提供相应的 文本提取接口。网络蜘蛛只需要调用这些插件的接口,就可以轻松的提取文档中的文本信息 和文件其它相关的信息。HTML等文档不一样,HTML有一套自己的语法,通过不同的命令标识符来表示不同的 字体、颜色、位置等版式,如:、等,提取文本信息时需要把这些标识符都过滤掉。过滤标 识符并非难事,因为这些标识符都有一定的规则,只要按照不同的标识符取得相应的信息即 可。但在识别这些信息的时候,需要同步记录许多版式信息,例如文字的字体大小、是否是 标题、是否是加粗显示、是否是页面的关键词等,这些信息有助于计算单词在网页中的重要 程度。同时,

10、对于HTML网页来说,除了标题和正文以外,会有许多广告链接以及公共的频 道链接,这些链接和文本正文一点关系也没有,在提取网页内容的时候,也需要过滤这些无 用的链接。例如某个网站有“产品介绍”频道,因为导航条在网站内每个网页都有,若不过滤 导航条链接,在搜索“产品介绍”的时候,则网站内每个网页都会搜索到,无疑会带来大量垃 圾信息。过滤这些无效链接需要统计大量的网页结构规律,抽取一些共性,统一过滤;对于 一些重要而结果特殊的网站,还需要个别处理。这就需要网络蜘蛛的设计有一定的扩展性。四、网络蜘蛛的程序构架用 ASP 构造网络蜘蛛那么如何用ASP构建网络蜘蛛呢?答案是:Internet transf

11、er control (ITC)。这个由微 软提供的控件,将使你能够通过ASP程序访问Internet资源。你可以用ITC搜寻Web页面, 访问FTP服务器,甚至可以发送邮件标题。在本文里,我们将着重讨论搜寻Web页面的功有几个缺陷必须先说明一下。第一, ASP 无权访问 Windows 的注册表,这就使某 些ITC正常存储的常量和数值不可用。通常你可以通过设置ITC为“不使用默认值”来解决 这个问题,这就需要你在运行过程中指明每一次的值。另一个更严重的问题是关于许可证书的。由于ASP不具备调用License Manager (一项 Windows中的功能,可以保证组件和控件的合法使用)的功能

12、,那么当License Manager检 查当前组件的密钥密码,并将其与Windows注册表进行比较后,如果发现它们不同,该组 件将不会工作。因此,当你想把ITC配置到另一台没有所需密钥的计算机上时,将导致ITC崩溃。解决的办法之一是将ITC*到另一个VB组件中,由VB组件复制ITC的路径和工具, 从而进行配置。这项工作很麻烦,但不幸的是,它是必不可少的。你可以用下面的编码建立ITC:set Inet1 = CreateObject(InetCtls.Inet)Inet1.protocol = 4 Inet1.accesstype = 1 Inet1.requesttimeout = 60In

13、et1.URL = strURL strHTML = Inet1.OpenURL下面是一些例子:HTTPDirect connection to internet in secondsgrab HTML page现在strHTML保存着strURL指向的整个页面的HTML内容。要建立一个常规网络蜘 蛛,你现在只需要调用 instr() 功能来看看你寻找的串是否在当前位置即可。你也可以按照 href标记寻找,解析当前的URL,然后把它设置到Internet控件的属性中去,接着再继续打 开另一个页面。用来查看所有链接的最好方法是使用递归。要注意的是,尽管这种方法很易于实行,却不是非常准确和强大。今

14、天的许多搜索 引擎都可以进行额外的逻辑检查,例如计算一个页面中某一短语重复的次数,相关字词的近 似程度等,有些甚至可以用来判断所搜寻的语段与上下文的关系。用 VB 构造网络蜘蛛蜘蛛程序网站层次及其工作原理描述 序号网站层次父序号1 http:/ 1 02 http:/ 213 http:/ 214 http:/ 3 25 http:/ 3 2蜘蛛程序首先从层次1 (http:/ 链接记录到数据库(或者大数组等),并把这些网站链接标识为层次2;当把层次2全部记录到数据库后,开始从层次2中顺序为第一的(这里指序号为2的网 站)网站链接开始提取其下面的的所有链接记录到数据库,并把这些网站链接标识为层

15、次3 然后依次把层次为2 的网站的所有链接记录到数据库,同时把他们的层次标识为层次3;当层次3全部记录数据库后,开始从层次3中顺序为第一的网站链接开始提取,依次类推即可!注意:程序要保留一个指针记录当前正在*作的序号!另外您也可以增加一个父序号字 段来记录他们之间的继承关系!层次 1 表示为网络种子;我们这里把网络种子放在第一层,根据需要您可以设置一个或者多个网络种子,实际上我们通过这个层次图可以很显然地看出来,低层次的网址就是高层次的网络种子。也就是说只要有一个或者几个网络种子,我们就可以通过他们的链接找到更多的网络种子。只要这样我们的蜘蛛才能永远地运行下去!层次2 是通过层次1(即网络种子)抓取到的链接;层次3 是通过层次2抓取到的链接;依次类推,构成一棵大树!蜘蛛程序关键代码:这里使用 VB 实现核心部分的代码,当然您也可以很简单地转换成其他语言代码。在这里了为了简单起见,我们这里不对数据库*作,我们建立一个二维数组存放我们的网址 !Dim Web(4,10000)Dim PointerDim IdDim LayerDim Running /建立数组/建立指针,记录当前种子/建立序号,记录当前抓

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号