基于C++的网路爬虫的设计与实现

优采云 发布时间: 2020-05-28 08:01

  基于 C++的网路爬虫的设计与实现的研究综述作者:xxx 指导老师:xxx摘要:本文归纳了网路爬虫的设计与实现方面的研究内容,概括了网路爬虫的定 摘要 义与爬取策略、网络爬虫的体系结构、设计网路爬虫的关键问题以及爬虫身分的 识别等方面的观点,并总结了怎样通过一个或多个给定的*敏*感*词*网站,将网站上相 应的网页抓取出来,并将其存入数据库或文本文件中的研究成果。本文也强调了 如何通过解决传统的通用搜索引擎在个别领域的局限性, 帮助人们愈加有效地提 取与借助互联网信息,进而提升人们在检索信息效率方面的研究需求。最后,本 文提出了一个满足用户需求的网路爬虫的开发方案。 关键词:网络爬虫 ;通用搜索引擎 ;互联网 关键词The Design and Implementation of Web Spider Based on C++Author:xxxTutor: xxx Abstract:This paper summarizes the research about the design and implementation of the web spider, summarizesthe view aboutthe definition of web spider, the crawling strategy of the web spider, the architecture of the web spider, the key issues to design the web spider and identification of the web spider ,and summarizes the research about how to catch the web-pages which links to the corresponding web site through one or more given seed site, and then stores it into a database or text file . The paper also points out how to solve the limitations of the Traditional General Search Engine in some areas , help people more effectively extract the information and make use of the Internet, then improve people’sresearch needs in the area of information retrieval. In the end, the paper proposesa web spider development planwhich can meet the user’s needs. Keywords:WebSpiders ;Tradition Universal Search Engine ; Internet随着网路技术的发展,信息的提取与借助在人们的日常生活中越来越重要。

  搜索 引擎因为才能从广袤的网路资源中给用户提供对用户有用的信息而获得长足的 发展,自诞生以来,搜索引擎获得了越来越多用户的追捧,成为人们日常生活中 检索信息必不可少的搜索工具。 研究背景 随着经济社会的发展,人们对信息搜索提出了更高的要求。传统搜索引擎c++网络爬虫, 例如传统的通用搜索引擎 AltaVista,Yahoo!和 Google 大都是基于关键字的检 索,对按照语义信息提出的查询却无能为力,搜索结果往往包含大量用户并不关 心的网页;随着万维网的数据方式的不断丰富与网路技术的不断发展,图片、数 据库、音频及视频多媒体等不同数据方式大量出现,传统搜索引擎对这种信息含 量密集且具有一定数据结构的数据不能挺好的获取和发觉。另外,传统搜索引擎 有限的搜索引擎服务器资源与无限的网路数据资源之间的矛盾也日渐突出。 为了解决这种问题,人们设计实现一个才能依据用户提供的*敏*感*词*网站,定向抓 取相关网页资源的网路爬虫。网络爬虫是一个手动下载网页的程序,它按照既定 的抓取目标,有选择的访问万维网上的网页与相关的链接,获取所须要的信息。 它并不追求大的覆盖率,而将目标定为抓取与某一特定主题内容相关的网页,为 面向主题的用户查询打算数据资源。

   1.网络爬虫的定义及爬行策略 一个网路蜘蛛就是一种机器人,或者软件代理。大体上,它从一组要访问的 URL 链接开始,可以称这种 URL 为*敏*感*词*。爬虫访问那些链接,它分辨出这种页面 的所有超链接,然后添加到这个 URL 列表,可以比作检索前沿。这些 URL 按照一 定的策略反复访问,直到满足一定的条件结束。其工作流程如下:图 1 网络爬虫的工作流程网页爬虫的行为一般是四种策略组合的结果。这四种策略分别是选择策略、 重新访问策略、平衡礼貌策略、并行策略。其中,选择策略,用来决定所要下载 的页面; 重新访问策略, 用来决定什么时候检测页面的更新变化; 平衡礼貌策略, 指出如何防止站点超员;并行策略,指出如何协同达到分布式抓取的疗效。 2.网络爬虫体系结构 网络爬虫的结构主要分为以下几个部份: (1)下载模块,(2)网页剖析模块, (3) URL去重模块,(4) URL分配模块, 如图2所示:图2系统构架图2.1下载模块 下载模块负责抓取网页, 是整个系统的基本与关键部份,直接影响爬行疗效。 该模块通常包含3 个子模块: (1) 下载线程; (2) Host控制子模块; (3) DNS 解 析子模块。

   2.2网页剖析模块 网页剖析主要是内容剖析和链接抽取。 网页中有很多不同的编码格式, 这些 格式来自不同的文本( 简体中文、繁体英文、英文等) 。这些不同的文本信息会 影响到后续的正文抽取和副词等模块。网页剖析中须要考虑到这类问题。 HTML,XML网页不仅标题和正文以外, 会有许多版权信息、 广告链接以及公共 的频道链接, 这些链接和文本通常没有很大的价值, 在提取网页内容的时侯,需 要过滤这种无用的链接。对于DOC, PPT, XLS, PDF 等带格式的文件, 网络爬虫 都要提取出文件里的纯文本内容。对于多媒体、图片等文件, 一般是通过链接的 锚文本( 即链接文本) 和相关的文件注释来判定那些文件的内容。 2.3 URL去重模块 在下载的过程中, 不可防止地会碰到重复的链接, 如何去除那些重复的链 接, 是个很复杂的议程。URL的去重可以说是爬虫系统中最重要的一部分, 直接 影响爬行效率和疗效。 目前主流网路爬虫的URL 去重机制主要有两种方法: (1) 完全显存形式; (2) 基于c盘的缓存方法。完全显存形式就是指估算URL 的Hash 值, 一般用4 至6个字节表示, 这样10 亿个网页的URL 就须要5 到8个G的显存。

   另一种方法是开一个大链表进行按位验证, 这样只需后者八分之一的显存, 但有可能错判, 且误判率随着爬行规模的减小而提升。 基于c盘的缓存方法则是将大部分数据放 在c盘上, 内存里储存一个缓存, 然后按照策略更新缓存。 由于c盘的速率比内 存慢一个数量级, 一旦所查URL不命中缓存, 就必须在c盘中进行查找, 从而大 大影响效率。 2.4 URL分配模块 抓取的效率主要依赖于硬件资源、网络的带宽以及程序执行效率等。普通单 处理机系统受限于CPU 的处理能力、 磁盘存储的容量, 不可能具备处理海量信息 的能力, 这就要求Crawler 支持分布式协同工作。 URL 分配模块主要考虑两个问题: (1) 在节点间界定URL的策略, 即怎样分 配下载任务;(2) 优化性能, 比如负载均衡、协同工作的开支等。 3.设计网路爬虫的关键问题 3.1 可伸缩性 面对网路上数以万亿计的网页, 使用有限的资源运转一个高性能、 可伸缩的 Crawler 是一个首要任务。完成这项任务一般有3 点要求。首先, 采用的算法和 数据结构要才能支持Crawler 处理海量的网页。 其次, 在有限资源下, 爬行的平 均速率必须维持一个较高的水平。

   第三, 在添加硬件的情况下, 性能才能得到线 性下降。 在效率方面, 由于网络爬虫可以看成是一个生产者消费者模型, 如何让 各个模块协调工作, 以达到最佳性能, 也是一个严重的挑战。 3.2 提高下载质量 网络爬虫的目标是抓取互联网上所有有价值的网页。 哪些网页有价值, 如何 抓取这种网页, 这些问题须要对网页的质量有一个较为全面的评价。 而评价标准 主要依赖对互联网和用户需求的理解。其中, 主要包括以下几个方面的问题: ①网页之间的链接关系。 ②URL 本身的质量。 ③网页重复情况。 ④网页内容的评价。 3.3 网页更新 目前网页更新的方法有两种: 一种是周期性进行更新。 Crawler 第一次爬行 到设定好的规模后, 停止爬行, 然后每隔一段( 固定的) 时间对本地的索引数 据库网页进行一次全面的信息更新维护, 即替换掉陈旧的信息, 加入新生成的 网页。更新周期通常以礼拜或月为计量单位。我们称这些为周期性Crawler。另 一种是增量式信息更新方式。 因为互联网中包含的大量网页的更新周期是不一致 的, 有的变化无常, 有的非常稳定。 因此应当以网页的变化周期作为进行有效性 验证的根据。

   在每一次网页的更新过程中, 只对这些最有可能发生变化的网页进 行更新, 以不同的频度更新不同的网页。Crawler会仍然不停地爬行, 更新陈旧 的网页, 并用新的更重要的网页替换掉次重要的网页。 我们称采用这些方法的爬虫为增量式Crawler。 从理论上来讲, 增量式Crawler比周期性Crawler 效率更高。 但怎么确定每位网页的更新频度, 是一个难点。 4.爬虫身分辨识 网络爬虫通过使用 http 请求的用户代理数组来向网路服务器表明她们的 身份。网络管理员则通过检测网路服务器的日志,使用用户代理数组来辨别哪一 个爬虫以前访问过以及它访问的频度。 用户代理数组可能会包含一个可以使管理 员获取爬虫更多信息的 URL。邮件抓取器和其他怀有恶意的网路爬虫一般不会留 任何的用户代理数组内容, 或者她们也会将她们的身分伪装成浏览器或则其他的 知名爬虫。 5.开发工具介绍 5.1 Windows .NET Framework 2.0 开发平台 NET Framework 是支持生成和运行下一代应用程序和 XML Web services 的内部 Windows 组件。NET Framework 主要包含一个特别大的代码库,可以在顾客语言 ( 如 C++) 中 通 过 面 向 对 象 编 程 技 术 (OOP) 来 使 用 这 些 代 码 。

   这 个 部 分 .NET Framework 库定义了一些基本类型。库分为不同的模块,这样就可以按照希望得 到的结果来选择使用其中的各个部份。 5.2 开发工具 C++ C++是由 C 子语言、 面向对象的 C++、 泛型编程语言和 STL (C++标准模板库, Standard Template Library)组成的程序设计语言。C++支持 C 语言的几乎全部 功能,在句型上与 C 语言仅有极微妙的差异。C++强大(但容易失控的)模板功 能使它能在编译期完成许多工作,从而大大提升运行期效率。随着 STL 的不断发 展,它早已渐渐成为 C++程序设计中不可或缺的部份,其效率可能比通常的 native 代码低些,但是其安全性与规范性让它大受欢迎。 5.3 后台数据库 ACCESS 数据库 Microsoft Office Access(前名 Microsoft Access)是由谷歌发布的关联 式数据库管理系统。它结合了 Microsoft Jet Database Engine 和 图形用户界 面两项特征,是 Microsoft Office 的成员之一。它简单易用,可以胜任小批量 的查询工作。

   三、总结 本文分别从目前搜索引擎的发展*敏*感*词*红,陆余良.主题网路爬虫研究综述[J].计算机应用研究,2007,(10):70-79. [2] 罗刚,王振东. 自己动手写网路爬虫[M].清华大学出版社,2010c++网络爬虫,(10). [3] 大连海事大学计算机科学与技术学院.主题搜索引擎中网路爬虫的搜索策略研究[J].计算 机工程与科学,2008,(03):44-46. [4] 罗刚.自己动手写搜索引擎[M].电子工业出版社,2009,(11). [5] 郑志高,刘庆圣,陈立彬.基于主题网路爬虫的网路学习资源搜集平台的设计[J].中国教 育信息化,2010,(01):55-67. [6] 汪涛,樊孝忠.主题爬虫的设计与实现[J].计算机应用,2004,(S1):110-121. [7] 汪涛,樊孝忠.链接分析对主题爬虫的改进[J].计算机应用,2004,(S2):55-70. [8] 尹江, 尹治本, 黄洪.网络爬虫效率困局的剖析与解决方案[J].计算机应用, 2008, (5):20-31. [9] 汪涛, 樊孝忠, 顾益军, 刘林.基于概念剖析的主题爬虫设计[J].北京理工大学学报, 2004, (10):33-41. [10] 李蕾,王楠,张剑,钟义信,郭祥昊,贾自燕.中文搜索引擎概念检索初探[J]. 计算机 工程与应用,2000,(06):66-75. [11] 潘春华,冯太明,武港山.基于联通爬虫的专用 Web 信息搜集系统的设计[J].计算机工程 与应用,2003,(36):99-109. [12] 赫枫龄, 左万利.利用超链接信息改进网页爬行器的搜索策略[J].吉林大学学报(信息科学 版),2005,(01):100-108.

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线