【VC++开源代码栏目提醒】:本文主要为网学会员提供“基于C++的搜索引擎网络爬虫设计与实现(毕业论文doc) - 毕业设计”,希望对需要基于C++的搜索引擎网络爬虫设计与实现(毕业论文doc) - 毕业设计网友有所帮助,学习一下!
搜索引擎网络爬虫设计与实现 摘要 网络中的资源非常丰富,但是如何有效的搜索信息却是一件困难的事情。
建立搜索引擎就是解决这个问题的最好方法。
本文首先详细介绍了基于英特网的搜索引擎的系统结构,然后具体阐述了如何设计并实现搜索引擎的搜索器——网络爬虫。
多线程网络爬虫程序是从指定的 Web 页面中按照宽度优先算法进行解析、搜索,并把搜索到的每条 URL 进行抓取、保存并且以 URL 为新的入口在互联网上进行不断的爬行的自动执行后台程序。
网络爬虫主要应用 socket 套接字技术、正则表达式、HTTP 协议、windows 网络编程技术等相关技术,以 C 语言作为实现语言,并在
VC6.0 下调试通过。
在网络爬虫的章节中除了详细的阐述技术核心外还结合了多线程网络爬虫的实现
代码来说明,易于理解。
本网络爬虫是一个能够在后台运行的以配置文件来作为初始 URL,以宽度优先算法向下爬行,保存目标 URL 的网络程序,能够执行普通用户网络搜索任务。
关键词 搜索引擎;网络爬虫;URL 搜索器;多线程-Design and Realization of Search Engine Network Spider Abstract The resource of network is very rich but how to search the effective information is a difficult task. The establishment of a search engine is the best way to solve this problem. This paper first introduces the internet-based search engine structure and then illustrates how to implement search engine ----network spiders. The multi-thread network spider procedure is from the Web page whichassigns according to the width priority algorithm connection for analysis andsearch and each URL is snatched and preserved and make the result URL as thenew source entrance unceasing crawling on internet to carry out the backgoudautomatically. My paper of network spider mainly applies to the socket technology theregular expression the HTTP agreement the windows network programmingtechnology and other correlation technique and taking C language asimplemented language and passes under
VC6.0 debugging. In the chapter of the spider design and implementation besides a detailedexposition of the core technology in conjunction with the multi-threadednetwork spider to illustrate the realization of the code it is easy to understand.This network spiders is initial URL based on configuration files which canoperate on background , using width priority algorithm to crawl downpreserving network programme of target URL.Keywords Internet search engine Network spider URL search programme Multithreaded- 目录摘要............................................................................................................................ IAbstract .................................................................................................................... II第 1 章 绪论 ............................................................................................................ 1 1.1 课题背景 ....................................................................................................... 1 1.2 搜索引擎的历史和分类 .............................................................................. 2 1.2.1 搜索引擎的历史 ................................................................................... 2 1.2.2 搜索引擎的分类 ................................................................................... 2 1.3 搜索引擎的发展趋势 .................................................................................. 3 1.4 搜索引擎的组成部分 .................................................................................. 4 1.5 课题研究的主要内容 .................................................................................. 4第 2 章 网络爬虫的技术要点分析....................................................................... 6 2.1 网络爬虫 Spider 工作原理 ......................................................................... 6 2.1.1 Spider 的概念 ........................................................................................ 6 2.1.2 网络爬虫抓取内容分析 ...................................................................... 6 2.2 HTTP 协议 ..................................................................................................... 7 2.2.1 HTTP 协议的请求 ................................................................................. 7 2.2.2 HTTP 协议的响应 ................................................................................. 8 2.2.3 HTTP 的消息报头 ................................................................................. 8 2.3 SOCKET 套接字 ......................................................................................... 10 2.3.1 什么是 SOCKET 套接字 ................................................................... 10 2.3.2 SOCKET 各函数分析 ......................................................................... 10 2.4 正则表达式 ................................................................................................. 14 2.4.1 正则表达式应用分析 ......................................................................... 14 2.4.2 正则表达式的元字符分析 ................................................................ 15 2.5 本章总结 ..................................................................................................... 15第 3 章 网络爬虫系统模型的分析和概要设计 ................................................ 16 3.1 网络爬虫模型分析 .................................................................................... 16 3.1.1 单线程爬虫模型分析 ......................................................................... 16 3.1.2 多线程爬虫模型分析 ......................................................................... 16 3.1.3 爬虫集群模型分析 ............................................................................. 17 3.2 网络爬虫的搜索策略的分析与设计 ....................................................... 17 3.3 网络爬虫主要性能评价指标分析 ........................................................... 20- 3.4 本
论文中网络爬虫的概要设计 ............................................................... 20第 4 章 网络爬虫的详细设计与实现 ................................................................ 23 4.1 网络爬虫总体设计 .................................................................................... 23 4.2 Socket 功能模块................................................................. 24 4.2.1 Socket 功能模块的设计 ...................................................................... 24 4.2.2 Socket 功能模块的具体实现 ............................................................. 24 4.2.3 Socket 模块中各功能函数模块中的调用关系设计 ........................ 31 4.3 HTTP 功能模块................................................................. 33 4.3.1 HTTP 协议与 URL .............................................................................. 33 4.3.2 依照 HTTP 协议设计 send函数发送信息 .................................... 33 4.4 正则表达式过滤模块 ....................................................... 35 4.4.1 URL 正则表达式的定义与实现 ........................................................ 35 4.4.2
开源正则表达式引擎 DEELX 的应用 ............................................ 37 4.4.3 MatchResult 类的调用和设计 ........................................................... 38 4.5 URL 保存模块.................................................................... 39 4.6 宽度搜索模块.................................................................... 39 4.7 文件存储模块.................................................................... 41 4.8 多线程 ................................................................................ 42 4.9 运行显示结果............................................................................................. 42 4.9.1 输入 ...................................................................................................... 42 4.9.2 显示 ...................................................................................................... 43 4.9.3 结果 ...................................................................................................... 43 4.10 本章总结 ................................................................................................... 44结论......................................................................................................................... 45致谢......................................................................................................................... 46参考文献 ................................................................................................................ 47附录......................................................................................................................... 48
论文 第1章 绪论1.1 课题背景 面对浩瀚的网络资源,搜索引擎为所有网上冲浪的用户提供了一个入口,毫不夸张的说,所有的用户都可以从搜索出发到达自己想去的网上任何一个地方。
因此它也成为除了电子邮件以外最多人使用的网上服务。
什么是搜索引擎?它是如何工作的?搜索引擎一词在国内外因特网领域被广泛使用,然而他的含义却不尽相同。
在美国搜索引擎通常指的是基于因特网的搜索引擎,他们通过网络机器人程序收集上千万到几亿个网页,并且每一个词都被搜索引擎索引,也就是我们说的全文检索。
著名的因特网搜索引擎包括 First Search、Google、HotBot 等。
在中国,搜索引擎通常指基于网站目录的搜索服务或是特定网站的搜索服务,本人这里研究的是基于因特网的搜索技术。
广义的搜索引擎泛指网络尤其是万维网上提供信息检索服务的工具或系统即在因特网上或通过因特网响应用户的搜索请求返回相应查询结果的信息技术和系统. 狭义的搜索引擎主要指利用网络自动搜索软件或人工方式对万维网信息资源进行采集分析与标引并将索引信息组织成数据库以网站形式为网络用户提供检索服务的一类信息服务系统. 概括的说:搜索引擎就是 WWW 网络环境中的一套信息检索系统。
它通常有两种不同的工作方式:一种是分类目录型的检索,把因特网中的资源收集起来,由其提供的资源的类型不同而分成不同的目录,再一层层地进行分类,人们要找自己想要的信息可按他们的分类一层层进入,就能最后到达目的地,找到自己想要的信息;另一种是基于关键词(Keyword)的检索,这种方式用户可以用逻辑组合方式输入各种关键词,搜索引擎计算机根据这些关键词寻找用户所需资源的地址,然后根据一定的规则反馈给用户包含此关键字词信息的所有网址和指向这些网址的链接。
搜索引擎其实也就是一个网站,只不过该网站专门为你提供信息“检索”服务,它使用特有的程序把 INTERNET 上的所有信息归类以帮助人们在浩如烟海的信息海洋中搜寻到自己所需要的信息。
随着因特网信息按几何级数增长,这些搜索引擎利用其内部的一个 spider 程序,自动搜索网站每一页的开始,并把每一页上代表超级链接的所有词汇放入一个数据库,供用户来查询。
论文1.2 搜索引擎的历史和分类 搜索引擎的历史。
1990 年以前,没有任何人能搜索互联网。
所有搜索引擎 的祖 先,是 1990 年由 Montreal 的 McGill University 学生 AlanEmtage、Peter Deutsch、Bill Wheelan 发明的 Archie。
后来,程序员们开发出了一个名叫“spider”(爬虫)的“Robot”(机器人)程序,它能自动以人类无法达到的速度不断重复地在网络上检索信息。
这种行为很像一只爬虫在 INTERNET 这张巨大的信息网上爬来爬去,因此,spider 程序便由此而来。
世界上第一个 Spider 程序,是 MIT Matthew Gray 的 World wide WebWanderer,用于追踪互联网发展规模。
刚开始它只用来统计互联网上的服务器数量,后来发展为也能够捕获网址(URL)1。
1.2.1 搜索引擎的历史 搜索引擎技术伴随着 WWW 的发展是引人注目的。
搜索引擎大约经历了三代的更新发展: 第一代搜索引擎出现于 1994 年。
这类搜索引擎一般都索引少于 1,000,000 个网页,极少重新搜集网页并去刷新索引。
而且其检索速度非常慢,一般都要等 待 10 秒甚至更长的时间。
在实现技术上也基本沿用较为成熟的 IR(Information Retrieval)、网络、数据库等技术,相当于利用一些已有技术实现的一个 WWW 上的应用。
在 1994 年 3 月到 4 月,网络爬虫(Spider)World Web Worm WWW平均每天承受大约 1500 次查询。
大约在 1996 年出现的第二代搜索引擎系统大多采用分布式方案(多个微型计算机协同工作)来提高数据规模、响应速度和用户数量,它们一般都保持一个大约 5 千万网页个的索引数据库,每天能够响应 1 千万次用户检索请求。
1997 年 11 月,当时最先进的几个搜索引擎号称能建立从2 百万到 1 亿的网页索引。
Altavista 搜索引擎声称他们每天大概要承受 2千万次查询。
2000 年搜索引擎 2000 年大会上,按照 Google 公司总裁 Larry Page 的演讲,Google 正在用 3 千台运行 Linux 系统的个人电脑在搜集 Web 上的网页,而且以每天 30 台的速度向这个微机集群里添加电脑,以保持与网络的发展相同步。
每台微机运行多个爬虫程序搜集网页的峰值速度是每秒100 个网页,平均速度是每秒 48.5 个网页,一天可以搜集超过 4 百万个网页。
1.2.2 搜索引擎的分类 搜索引擎按其工作方式主要可分为三种,分别是全文搜索引擎(FullText Search Engine)、目录索引类搜索引擎(Search Index/Directory)和元搜索引擎(Meta Search Engine)。
论文 全文搜索引擎是名副其实的搜索引擎,国外具代表性的有 Google、Fast/AllTheWeb、AltaVista、Inktomi、 Teoma、WiseNut 等,国内著名的有百度(Baidu) 。
它们都是通过从互联网上提取的各个网站的信息(以网页文字为主)而建立的数据库中,检索 与用户查询条件匹配的相关记录,然后按一定的排列顺序将结果返回给用户,因此他们是真正的搜索引擎。
目录索引虽然有搜索功能,但在严格意义上算不上是真正的搜索引擎,仅仅是按目录分类的网站链接列表而已。
用户完全可以不用进行关键词(Keywords) 查询,仅靠分类目录也可找到需要的信息。
目录索引中最具代表性的莫过 于大名鼎鼎的 Yahoo 雅虎 。
其他著名的 还有 OpenDirectory Project(DMOZ) 、LookSmart、About 等。
国内的搜狐、新浪、 2网易搜索也都属于这一类 。
元搜索引擎在接受用户查询请求时,同时在其他多个引擎上进行搜索,并将结果返回给用户。
著名的元搜索引擎有 InfoSpace、Dogpile、Vivisimo 等(元搜索引擎列表) ,中文元搜索引擎中具代表性的有搜星搜索引擎。
在搜索结果排列方面,有的直接按来源引擎排列搜索结果,如Dogpile,有的则按自定的规则将结果重新排列组合,如 Vivisimo。
1.3 搜索引擎的发展趋势 搜索引擎经过几年的发展和摸索,越来越贴近人们的需求,搜索引擎的技术也得到了很大的发展。
搜索引擎的最新技术发展包括以下几个方面: 为了提高搜索引擎对用户检索提问的理解,就必须有一个好的检索提问语言,为了克服关键词检索和目录查询的缺点,现在已经出现了自然语言智能答询。
用户可以输入简单的疑问句,比如“how can kill virus ofcomputer”。
搜索引擎在对提问进行结构和内容的分析之后,或直接给出提问的答案,或引导用户从几个可选择的问题中进行再选择。
自然语言的优势在于,一是使网络交流更加人性化,二是使查询变得更加方便、直接、有效。
1.基于链接评价的搜索引擎 基于链接评价的搜索引擎的优秀代表是 Googel,它独创的“链接评价体系”是基于这样一种认识,一个网页的重要性取决于它被其它网页链接的数量,特别是一些已经被认定是“重要”的网页的链接数量。
2.基于访问大众性的搜索引擎 基于访问大众性的搜索引擎的代表是 direct hit,它的基本理念是多数人选择访问的网站就是最重要的网站。
根据以前成千上万的网络用户在检索结果中实际所挑选并访问的网站和他们在这些网站上花费的时间来统计确定有关网站的重要性排名,并以此来确定哪些网站最符合用户的检索要
论文求。
因此具有典型的趋众性特点。
这种评价体制与基于链接评价的搜索引擎有着同样的缺点。
3.去掉检索结果中附加的多余信息 有调查指出,过多的附加信息加重了用户的信息负担,为了去掉这些过多的附加信息,可以采用用户定制、内容过滤等检索技术。
确定搜索引擎信息搜集范围,提高搜索引擎的针对性1.4 搜索引擎的组成部分 一个搜索引擎大致由三部分组成。
第一部分是搜索器,也就是上面提到的 Spider 程序。
它定期的自动爬到各个网站上,把网页抓下来,并顺着上面的链接,象爬虫一样爬开去,持续不断的抓取网页。
第二部分是索引器,它把爬虫程序抓来网页进行分析,按照关键词句进行索引,并存入服务器的数据库中。
第三部分是面向用户的检索器,它接收用户提交的查询字串,在索引数据库中查询,并将结果反馈给用户。
因此,准确的说,当我们利用搜索引擎搜索信息时,并不是真正在网上进行搜索,而是在检索那个由爬虫程序自动建立起来的庞大的数据库。
由于各大搜索引擎的数据库的自动更新周期是不同的,从几天到几周甚至一个月都有可能,因此,选择合适的搜索引擎显得尤为重要。
同时,有时也可能遇到用搜索引擎搜索到的网页无法打开的情况,了解了它的工作原理,这一点也就不会大惊小怪了3。
1.5 课题研究的主要内容 本
论文主要研究搜索引擎的搜索器(Spider 程序),详细介绍 Spider 程序的概念及技术要点,算法介绍,并用 C语言实现简单的可在后台自动运行的爬虫程序 网络爬虫程序,是一种专业的 Bot 程序。
用于查找大量的 Web 页面。
它从一个简单 Web 页面上开始执行,然后通过其超链接在访问其他页面,如此反复理论上可以扫描互联网上的所有页面。
基于因特网的搜索引擎是Spider 的最早应用。
例如搜索巨头 Google 公司,就利用网络机器人程序来遍历 Web 站点,以创建并维护这些大型数据库。
网络机器人还可以通过扫描 Web 站点的主页来得到这个站点的文件清单和层次机构。
还可以扫描出中断的超链接和拼写错误等。
然而 Internet 是建.
上一篇:
网上宾馆订房管理系统 论文
下一篇:
关于大学英语教学