« | September 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | | | | |
| 公告 |
愚人涂鸦,请多批评. |
Blog信息 |
blog名称:荷香小筑 日志总数:82 评论数量:201 留言数量:1 访问次数:536051 建立时间:2005年9月29日 |

| |
[自我培训]Spider 网上资源, 电脑与网络
hxxz 发表于 2005/12/20 13:08:02 |
Spider,又称Robot或Crawler,是专门用来搜集因特网上各种文档信息(网页)的一种智能主体,具有独立的工作和决策能力,能自动地在因特网上搜索爬行,并将搜集的信息返回给服务器。一般地,Spider从一定的初始URL地址出发,根据URL中指向其它URL地址的超链接而跳到其它的URL,进而不断地深入和扩展,基本上遍历整个网络。搜索算法:搜索的主要步骤可以如下描述:1)Spider从初始URL列表中取出URL并从网上获取其HTML文档内容; 2)从每个HTML文档中提取信息并放入网页数据库中; 3)从HTML文档中提取指向其它文档的URL,并加入到URL列表中; 4)重复以上三个步骤,直到再没有新的URL发现或超出了一定限制条件(如时间或磁盘空间的限制); 搜索算法有深度优先和广度优先两种基本的搜索策略。Spider依据URL列表的存取方式决定搜索策略: 1)先进先出的队列方式,则形成广度优先搜索.当起始URL列表包含有大量的网站服务器地址时,广度优先搜索将产生一个很好的初始结果,但很难深入到服务器中去。2)先进后出的堆栈方式,则形成深度优先搜索.这样能产生较好的文档分布,更容易发现文档的结构,即找到最大数目的交叉引用。深度和广度综合搜索策略:由于以上两种策略各有优缺点,我们采用综合的办法。对于每个HTM L文档中的超级链接,可以分为内部链接和外部链接两中,内部链接是指向本网站的其它文档,而外部链接指向其它网站。对于内部链接,用深度优先算法遍历该网站的所有网页,许多重复的URL链接或内部交叉链接能方便地过滤掉。而对于该网站的所有指向其它网站的URL链接则可以直接加到URL列表中。在添加某个URL到列表中时,必须检查该URL是否已经在URL列表中,以避免重复。实际上这也属于一种禁忌搜索策略(Taboo search)。多主体:由于每个Spider就是一个智能主体,因此采用多主体并行的策略是能很大地提高效率的。我们将多个Spider同时运行,每个Spider从不同的URL列表出发开始搜索,搜索结果返回到网页数据库中。多个Spider之间通过相互间的通信机制来确定是否有重复的URL链接,以避免冗余的工作。多线程:在具体实现时,由于对每个URL的连接都需要一定的时间,即获得对方服务器端的响应需要等待时间,再加上网络传输和拥塞的耗时,Spider的大量时间浪费在等待响应或信息这上面。为解决这个问题,我们采用了Java的多线程机制,一个线程对应一个URL连接,多个线程同时运行,则充分利用了各个连接的等待时间去完成其它连接或信息传输与处理的工作,其实际效率要比顺序执行要快几倍。但线程的数量的最佳值与本地CPU性能和网络带宽等因素有关,CPU性能好,则线程个数可以多一些,而若网络带宽越宽,则线程个数应当减少一些较好,一般线程数量在5至10个为佳。超级链接抽取算法:对于从URL获取的HTML文档,为了进一步地纵深和拓广URL范围,需要对HTML文档中URL超链接进行抽取。具体步骤为: 1)从HTML文档中读入一行信息,并以HTML标记边界"<"和">"为分隔符,将一行信息分为若干段; 2)逐一取出每段,判断其中是否出现以下标记:href="……" ,…之间和 |
|
回复:Spider 网上资源, 电脑与网络
xingf(游客)发表评论于2006/1/18 9:10:11 |
这个讲得好,以前只知道个大概,这回算是比较明确的了解了。 |
|
» 1 »
|