找回密码
 加入怎通
查看: 1146|回复: 3

[站长八卦] 网络蜘蛛在搜索引擎中如何设计与实现

[复制链接]
站长小二 发表于 2012-08-24 13:45:12 | 显示全部楼层 |阅读模式
  对于搜索引擎来说,网络蜘蛛是最底层的原料提供者。对网络蜘蛛的需求主要来自索引器。: i9 R% t0 J, y+ E! y" ^) a/ x

4 A" v: C7 ~1 Y  索引器一般为全文索引器,它并不能干预网络蜘蛛的行为。因此,网络蜘蛛必须可以自动不停地运行。
7 q7 {/ [2 @$ M9 t9 m0 h
; U% O! X; W1 P( W; \- B, ]' p  h3 X  索引器要求网络蜘蛛爬取并保存一定字符集范围内的文本文件。保存形式可以是一个大文件也可以是文件夹或数据库。同时,由于互联网是一个全天候开放的系统,网络上的资源随时都有可能已被更新。网络蜘蛛要尽量做到下载的网页保持最新版本,这样才可以获得有实效性的信息。综上所述,网络蜘蛛的功能可以概括。为以下两点:
1 b" d: x$ h: m
$ Z: b0 ^4 G( S2 k) [" a  (1)不需干预的自动爬取网页;(2)以文本形式保存网页内容,并对其进行定期更URL SeⅣer是对URL队列及其相关操作的一个封装,为工作线程提供无重复的URL。URL senrer在内部维护着多个队列用于存储有状态和优先级的URL,这样来避免URL的重复爬取和实现URL的优先爬取策略。
" u- F7 ^: G# T1 q8 w( K
; c4 E. D. o. j9 i% h, _) [  页面存储模块的功能比较简单,它为工作线程提供文件存储服务。它将线程请求到的H吼L字符序列存储到本地文件或数据库。线程池是一种线程组织管理方法。由于线程的创建将消耗一定的系统资源,所以为每一个URL创建一个线程并不现实。一个好的解决方法就是使用线程池。线程池只创建一定数量的工作线程在线程池中等待,当有任务时,工作线程便开始运行,否则它们一直等当线程从URL SeⅣer获取到URL后,它将发送一个HrI『I:P请求来获取URL所指向的网页。获取成功后对网页代码进行解析,从中提取更多的URL并发往URL Senrer作为以后继续爬取的目标。7 }* o1 ~% I* N! V

/ ?, C/ m! |1 |) Q1 a/ s$ g9 }  网页被解析完后,将被页面存储模块存储。整个过程及URL在URLSeⅣer中的相应状态如图3所示:网络蜘蛛提供的最终结果是网页。网页被请求、保存到本地后,并不能就置之不理了。假设索引器为一个网页索引之后提取了一个关键字,用户通过搜索这个关键字得到了这个网页的URL,当用户浏览这个URL指向的页面时,如果这个页面已经改变了,那么本次搜索对用户来说就是无效的。用户最终从搜索引擎得到的不是网页,而是指向网页的URL,网页始终保持在它本来所在的Web服务器中。因此,搜索引擎要保证页面库中的网页与Web服务器上的网页一致。) w- g+ g5 ]/ z
8 S6 H  R& d1 q" x8 J5 S
  网络蜘蛛第一次处理一个URL时,会将网页保存到本地,之后定期对其进行重复请求,来检查网页是否是最新的,如果不是则下载。这个请求与第一次请求是有区别的。后面的请求只请求网页的头信息,根据头信息中的最后更改日期字段值来判断网页的状态。  L/ |3 y/ Y+ l

9 N) Q5 h, H7 _: W. m  ^8 L; H
回复

使用道具 举报

bhccn 发表于 2025-11-10 19:45:17 | 显示全部楼层
楼主辛苦了,整理这么多内容,必须点赞收藏
回复 支持 反对

使用道具 举报

展翼—阳阳 发表于 2026-01-05 19:45:21 | 显示全部楼层
刚好遇到类似问题,看完这个帖子心里有底了
回复 支持 反对

使用道具 举报

skdfjs2 发表于 2026-02-25 12:38:17 | 显示全部楼层
学习到了,之前一直没注意过这个点,受教了
回复 支持 反对

使用道具 举报

    您需要登录后才可以回帖 登录 | 加入怎通

    本版积分规则

    QQ|手机版|小黑屋|网站地图|真牛社区 ( 苏ICP备2023040716号-2 )

    GMT+8, 2026-4-28 05:11 , Processed in 2.213221 second(s), 52 queries , Gzip On.

    免责声明:本站信息来自互联网,本站不对其内容真实性负责,如有侵权等情况请联系420897364#qq.com(把#换成@)删除。

    Powered by Discuz! X3.5

    快速回复 返回顶部 返回列表