基于C#的网络蜘蛛的设计和实现

来源 :中国教育信息化·高教职教 | 被引量 : 0次 | 上传用户:shiyigudan
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:网络蜘蛛是现代搜索引擎获得网络信息的重要手段,直接影响到搜索引擎的查全率,C#是微软发布的开发平台.NET中的旗舰,本文设计了一种简易的网络蜘蛛并通过C#语言将其实现。
  关键词:C#.NET 线程 网络蜘蛛 排序算法
  中图分类号:TP311 文献标识码:B 文章编号:1673-8454(2008)21-0069-03
  
  目前,对于全球大多数互联网用户来说,搜索引擎是其准确获得所需要信息或者知识的最有效的工具。但是对于所有的搜索引擎来说,最重要的性能指标有两个:查全率和查准率。查全率和搜索引擎搜集的网页数量和质量有关,而查准率和搜索引擎所采用的导航方式及排序算法有关。
  本文介绍的是将搜索引擎用于搜集网页,提高查全率的最重要的工具——网络蜘蛛(Web Spider),也称网络机器人(Web Robot)。网络蜘蛛的主要作用是搜集互联网的网页,我们也可以用它来定期搜集某个网站的内容,来跟踪判断网站的发展,或者做站内搜索引擎。从网络蜘蛛的工作原理来看,“网络蜘蛛”是一个比较形象的名字,它是在互联网内,通过网页链接,从一个网页爬到另一个网页来进行网页内容搜集的工具。它的工作通常是这样进行的:在一个网页上,把这个网页的内容收集入数据库,分析这个网页的链接,根据链接进入另一个网页。再进行上面的操作,直到把这个网站的页面全部搜集完,转入下一个网站。
  
  图2 Spider工作流程
  BFS算法
  Begin
  Visit Index
  Push clientnode.child into the end of Unvisitedqueue;
  If(Unvisitedqueue!=null)
  {
  Visit the top of Unvisitedqueue;
  Clientnode= Unvisitedqueue.top;
  Visit Clientnode;
  Push clientnode into visitedqueue;
  }
  End
  上述这三个部分都能够实现的话,网络蜘蛛完整工作流程如图2所示。
  对于网络蜘蛛的工作流程,如图2所示,网络蜘蛛首先获得一个URL,根据已经处理的URL数据库来判断该URL是否被处理过,如果没有处理过,则解析这个页面,提取这个页面链接页面的URL,然后下载当前页面,同时把当前页面的URL添加到已经处理的数据库中,然后根据选择的遍历算法向Spider提交下一个URL。如果在URL判断中,这个页面已经被处理过,那么直接根据选择的遍历算法向Spider提交下一个URL。为什么要在Spider运行前加一个判断,因为不同的网页可能拥有同一个链接,避免重复处理。
  
  二、各个模块的实现
  
  对于图2所描述的网络蜘蛛来说,实现网络蜘蛛的最重要的三个模块是HTML的解析、页面下载以及网页遍历。对于网页遍历的BFS算法上文中已经描述过了,所以这里重点介绍在C#中如何实现HTML解析和网页下载模块。
  1.HTML的解析
  对于网络蜘蛛来说,网页信息中最有价值的信息是网页的链接和网页的内容。网页的链接(Internal Links),关系到网络蜘蛛下一步爬行的页面,网页内容则是网络蜘蛛获取的网页所显示的文字或图像内容。
  对于网络蜘蛛来说,如何分析、获得网页信息是很重要的一环,在C#中可以用System.Net.WebClient这个方法来获得网页的内容,然后使用URL正则表达式分析Html中的链接。用这种方法来获取网页的链接信息,网页的链接信息是网络蜘蛛进行判断下一步遍历目标,选择遍历路径的重要已知条件。
  而另一种方法就是调用.NET的一个类库——HtmlParser这个开源类库可以几乎解析所有的HTML标签。HtmlParser对HTML进行了4级封装,从低级到高级的顺序为:ParserStream、Source、Page、Lexer。其中 ParserStream负责从文件中获取二进制数据,但不做任何处理。Source把二进制文件转换成相应的字符序列,存储一组未加工的字符序列。
  2.页面下载模块的实现
  
  
  图3 简单的网络蜘蛛
  在C#中,网页下载是通过HttpWebRequest类来实现的,HttpWebRequest使用户能够直接与使用 HTTP 的服务器交互的附加属性和方法提供支持,而其中的GetResponse 方法返回包含来自 Internet 资源的响应的 WebResponse 对象,可以用于页面资源获取。下面则是网页下载中的核心部分,网页的HTML代码的获取。
  public string GetPageSource(string url)//获取网页的html代码
   {
  Uri uri=new Uri(url);
  HttpWebRequest MyReq=(HttpWebRequest)WebRequest.Create(uri);
  HttpWebResponse MyRes=(HttpWebResponse) MyReq.GetResponse();
  MyReq.Method="Post";
  MyReq.KeepAlive=false;
  StreamReader
  reader=new StreamReader(MyRes.GetResponseStream(),System.Text.Encoding.GetEncoding("GB2312"));
  return reader.ReadToEnd();
  }
  图3是笔者根据本文所述实现的一个简易的网络蜘蛛,该网络蜘蛛能对指定的网站进行爬行和页面下载,而此网络蜘蛛下载的页面是保存在指定的路径中,如果要是方便以后进一步建立索引,对页面信息进行处理的话,也可以把网站和页面信息保存在数据库中。
  另外一个问题就是网络蜘蛛的爬行周期,太长的话,会影响网络信息的时效性,太短的话,第一技术上实现比较难,第二对网站服务器也增加了不少负担。一般网络蜘蛛的爬行周期设为7~15天之间。并且完成若干个周期之后,网络蜘蛛也不必把已经抓过的网页每次都重新抓取,只需比较网页的属性和上次抓取的有无不同,如果相同也就是没有更新,则不必抓取,如果不同则进行抓取更新。
  
  三、小结
  
  网络蜘蛛是搜集WEB资源信息情报的非常有效的工具。随着互联网资源的日益丰富,网络蜘蛛在情报资源获取方面会起到越来越重要的作用。[4]本文结合C#语言介绍了网络蜘蛛的设计和构建,实现了一种可以实用的网络蜘蛛。在以后的研究中,如何用网络蜘蛛在网页上获取更多和更准确的信息,提供更丰富的检索信息,以及如何提高网络蜘蛛的爬行和抓取效率是我们进一步努力的方向。
  
  参考文献:
  [1]宋晖,张岭,叶允明.基于标记树对象抽取技术的Hidden Web获取研究[J].计算机工程与应用,2002(23).
  [2]于满泉.基于分块的网页信息解析器的研究与设计[J].计算机应用,2005(4).
  [3]赫枫龄.用有向图法解决网页爬行中循环链接问题[J].吉林大学学报,2004(3).
  [4]陈先.智能搜索引擎关键技术研究与实现[J].哈尔滨工程大学,2003(2).
其他文献
摘 要:提出了一种适用于软件人才培养的新型“认知学徒制”教学模式——“导师制下的项目驱动”教学模式,并系统阐述了该教学模式的内容和特点。  关键词:“认知学徒制” “导师制下的项目驱动” 教学模式  中图分类号:G434文献标识码:A  文章编号:1673-8454(2007)09-0068-02    一、“认知学徒制”的定义    所谓“认知学徒制”,是指将传统学徒制方法中的核心技术与学校教育
当今,培养具有科学素养的人才已成为各国提高自身国际竞争力的关键。党的十八大报告明确指出,要把科技创新摆在国家发展全局的核心位置。国务院于2016年颁布的《全民科学素质行动计划纲要实施方案(2016-2020年)》中特别强调培养未成年人的科学素养,提出“科学素质影响着公民的思维方式和行为方式,是实现美好生活的前提”。在国家重视幼儿科学教育的背景下,梳理我国幼儿科学教育的发展脉络,有助于探索中国幼儿科
从教二十多年,凭着对幼教事业的执着和对孩子的全心付出,不仅收获了孩子的爱,更积累了丰富的经验。面对接手新班的孩子,一个爱的拥抱,可以迅速拉近彼此的关系,度过磨合期,为各项工作的顺利开展开创良好局面。  今年九月,我兼职大(二)班的部分保教工作,大班的孩子已经逐渐有了自己的想法和喜好,他们和以前的老师相处了两三年,彼此感情很深。开学第一天,很多孩子发现换了新老师,明显表现出羞涩、躲闪或茫然的样子。尽
2007年8月10日,微软与锐捷网络共同宣布,结成战略合作伙伴关系,锐捷网络的全局安全解决方案(GSN)将与微软的网络访问保护技术(NAP)全面联动。锐捷的全局安全解决方案(GSN)及微软网络访问保护技术(NAP)的共同宗旨是,为用户提供更强大的网络自动防御、全局安全的整体解决方案。同时,双方的合作意味着锐捷网络GSN全局安全战略的正式启动。  微软网络访问保护技术(NAP),是通过Windows
作为全球电子白板行业的领导品牌,松下公司最新推出了一款更适合于教育、教学等相关行业的交互式电子白板产品——UB-T780。  松下电子白板,是目前国际上技术领先,并广泛应用于教学演示、会议讨论、军事演练、远程教育等领域的高端数字化设备。它不但是对传统的黑板、粉笔、板擦“三位一体”的陈旧教学、演示形式的颠覆性突破,更迎合、满足了现代人崇尚简约、环保的工作及生活理念。  松下交互式电子白板(Inter
新学期伊始,周口师范学院艺术设计专业的师生欣喜地发现学校为他们提供了全新的“武器”——50余台方正美仑3400 2200图形工作站,有了这些新式武器,进行大型的专业图形图像设计项目将不再成为难事。  正像计算机辅助图形设计技术已经广泛渗透到汽车、机械、造船、建筑、能源、航空、轻工和家电等工业领域一样,计算机辅助图形教育也已经广泛地深入到了工业设计、建筑设计、艺术设计等专业的教学和科研实践活动中,各
《今天运气怎么这么好》是孩子们从众多童书中发现的一本画风可爱、情节诙谐的名家绘本。里面有一只爱忘事却不断感叹自己运气怎么这么好的大灰狼乌鲁以及他的三位好朋友,还有一群没有被吃掉,觉得自己也很幸运的小猪。绘本中简单的形象、趣味的对话、巧妙的情节、独具匠心的戏剧效果仿佛还原了幼儿生活中的某些小小片段,引发了孩子们的强烈共鸣。在这本绘本陪伴的日子里,老师惊喜地发现:孩子们由于喜爱所以津津乐道,也在一日生
国内领先的网络设备制造商和解决方案提供商神州数码网络有限公司(简称神州数码网络), 于3月26日在北京翠宫饭店拉开其2009年全国品牌活动的开篇之作——“神州数码网络 2009中国行”的帷幕。此次大型IT盛会将在中国24个城市巡回举办,活动时间:3月26日-5月15日。届时,神州数码网络将围绕“构建全IPv6 全万兆的安全网络”、“构建实名制的安全网络”的两大应用主题展开。期间,神州数码网络将会发
背景  叙事研究就是以讲故事的形式述说自己、他人以及教育对象经历的课程事件并诠释其中的意义,分析事件背后的教育规律或教育问题,从而积极改进教育实践的过程。我每个学期都会组织教师以“成长的故事”为题做叙事研究文章交流,可是每次交流完,我总觉得“故事”里少了点什么。为了更加有针对性地提高教师的叙事研究能力,我选择了骨干教师丽丽作为重点培养对象,希望她能写出一篇优秀的叙事研究文章,供大家学习和参考。于是
游戏是幼儿的天性,是幼儿精神世界的艺术表达,也是幼儿园的基本活动。在幼儿园的中大班中,经常会看到孩子们用游戏材料简单地制作“枪”,还会假装处于一个作战的情境之中,互相观察、瞄准、躲闪。这种行为是媒体中的作战情节、画面诱发了幼儿的模仿,还是个体潜意识中存在这种“作战”情节?然而,无论如何,作为一种自发性的游戏行为,它如此频繁、普遍地发生着,无论教师还是幼儿都对它充满好奇,它是“潘多拉”的盒子,还是一