1、I网络爬虫的设计与实现 II摘 要网络爬虫将下载的网页和收集到的网页信息存储在本地数据库中以供搜索引擎使用,它是一个专门从万维网上下载网页并分析网页的程序。随着网络的快速发展,人们对搜索引擎的要求也越来越高,而网络爬虫的效率直接影响着搜索引擎的质量。本课题研究的是通用网络爬虫,它是从一个或若干个初始网页的链接开始进而得到一个链接队列。伴随着网页的抓取又不断从抓取到的网页中抽取新链接放入到链接队列中,直到爬虫系统满足了停止条件。该课题主要涉及到了缓冲池技术,多线程技术,套接字技术,HTTP 和 SSL 协议,正则表达式,Linux网络编程技术,PHP+Apache 的使用等相关技术。本说明书叙述
2、的网络爬虫是以 Linux C 实现的,加以 PHP 语言编写的界面使用户更加方面的操作,利用 Shell 脚本和 Apache 服务器使得爬虫系统和界面很好的结合在一起。关键词:网络爬虫 缓冲池 正则表达式 SSL 协议 多线程III目 次1 引言 .11.1 课题选题背景 .11.2 课题研究的意义 .22 需求分析 .32.1 功能需求分析 .32.2 系统性能分析 .43 系统设计 .53.1 系统工作流程图 .53.2 数据结构设计 .63.3 系统各功能流程图 .74 系统实现 .104.1 相关技术分析 .104.2 系统功能模块的实现 .115 测试与结果 .17结论 .23致
3、 谢 .24参 考 文 献 .2511 引言随着网络技术日新月异的发展,互联网俨然已成为信息的最大载体。为了能够在浩瀚的信息海洋中精确地查询用户所需要的信息,搜索引擎技术应运而生。目前比较流行的搜索引擎是 Google 和百度,他们拥有着庞大的用户数量。作为搜索引擎的重要组成部分,网络爬虫的设计直接影响着搜索引擎的质量。网络爬虫是一个专门从万维网上下载网页并分析网页的程序。它将下载的网页和采集到的网页信息存储在本地数据库中以供搜索引擎使用。网络爬虫的工作原理是从一个或若干初始网页的链接开始进而得到一个链接队列。伴随着网页的抓取又不断从抓取到的网页里抽取新的链接放入到链接队列中,直到爬虫程序满足
4、系统的某一条件时停止。本说明书对课题背景进行简单介绍的同时,又对研究网络爬虫的意义进行了叙述,在此基础上,详细的介绍来了利用 C 语言在 linux 系统上开发出多线程网络爬虫的设计步骤。1.1 课题选题背景搜索引擎是用户在网上冲浪时经常使用的一种工具,毫无疑问,每个用户都可以通过搜索引擎得到自己所需要的网络资源。搜索引擎一词在互联网领域得到广泛的应用,但是每个地区对它又有着不同的理解。在一些欧美国家搜索引擎常常是基于因特网的,它们通过网络爬虫程序采集网页,并且索引网页的每个词语,也就是全文检索。而在一些亚洲国家,搜索引擎通常是基于网站目录的搜索服务。总的来说:搜索引擎只是一种检索信息的工具。
5、它的检索方式分为以下两种:一种是目录型的方式,爬虫程序把网络的资源采集在一起,再根据资源类型的不同而分成不同的目录,然后继续一层层地进行分类,人们查询信息时就是按分类一层层进入的,最后得到自己所需求的信息。另一种是用户经常使用的关键字方式,搜索引擎根据用户输入的关键词检索用户所需资源的地址,然后把这些地址反馈给用户。21.2 课题研究的意义网络在我们的生活中越来越重要,网络的信息量也越来越大,研究该课题可以更好的理解网络爬虫在搜索引擎中的作用以及网络爬虫的原理。现实中,一般的服务器大多是 linux 系统该课题更好的配合了 linux 系统上运行爬虫程序,加上界面更容易操作。21 世纪是一个讲
6、究信息安全的时代,于是网站上出现了越来越多的https(超文本传输安全协议)协议的链接,该课题很好的利用了 SSL 协议解决了下载https 协议链接的问题。设备的内存是珍贵的,如何更加合理有效地利用内存提高内存的利用率是值得研究的,该课题为了解决内存的利用使用了内存池来提高内存的使用率。32 需求分析网络爬虫是一个专门从万维网上下载网页并分析网页的程序。它将下载的网页和收集到的信息存储在本地数据库中以供搜索引擎使用。网络爬虫的工作原理是从一个或若干初始网页的链接开始进而得到一个链接队列。伴随着网页的抓取又不断从抓取到的网页里抽取新的链接放入到链接队列中,直到爬虫程序满足系统的某一条件时停止。
7、它是搜索引擎的重要组成部分。2.1 功能需求分析(1) 网页下载功能 能够下载任何 http 协议和 https 协议的链接的网页。 构造 HTTP 请求中的 GET 请求。 分析 HTTP 响应请求。(2) 网页分析功能 提取网页标题。 提取网页关键字。 提取网页摘要。 提取网页链接并统计数量。 把新链接加入到 URL 队列。(3) 内存池功能 能够分配固定大小的内存。 能够回收内存对象。 能够释放内存对象。 能够销毁内存池。 能够分配固定大小的内存。(4) 保存功能 能够正确保存网页以及网页信息到文件。4 功能把系统运行中的异常写入日志文件。(5) 界面 可以配置参数和运行后台的爬虫系统。
8、 能够查看运行结果。2.2 系统性能分析当用户使用系统时,系统需要能够对于一些异常状况系统能够记录并跳过此异常继续执行。系统需要具有较高的可移植性和可靠性。系统需要具有很好的可测试性和可维护性。网络爬虫系统是不停的从万维网上下载网页和采集网页信息的系统。由于网络爬虫系统是搜索引擎的组成部分,搜索引擎要利用到爬虫系统的信息,所以系统要设计合理的存储文件并建立索引。53 系统设计3.1 系统工作流程图本系统通过 IE 共同访问 Apache 服务器的发布的页面、Apache 服务器返回页面方便用户操作。(1) 系统物理结构如图 3-1:互联网用户用户用户用户用户A P A C H E 服务器调用网
9、络爬虫系统图 3-1 系统物理结构图(2) 界面的流程如图 3-2:配置界面开始显示结果图 3-2 页面结构图.(3) 网络爬虫系统流程如图 3-3:6配置界面开始创建内存池初始化 U R L 队列下载网页分析网页满足停止条件结束是提取网页链接加入到U R L 队列否界面显示结果图 3-3 系统流程图3.2 数据结构设计系统中主要是使用了链表作为 URL 队列,而链表中的每个结构体是一个数据单元,数据单元中的元素及其含义如表 3-1:表 3-1 数据结构表字段 类型 含义host char * 网页所在的主机port int 网络服务器所使用的端口dir char * 网页所在的目录page
10、char * 网页文件名file char * 本地保存的文件名pageinfo char * 保存网页信息的文件名url char * 存储网页链接title char * 网页的标题7keywords char * 网页的关键字body char * 网页的摘要protocal char 连接使用的协议 0 -http 1- httpsurl_count int 网页中的链接数目type char * 网页类型code char * 网页编码page_size int 网页大小is_handled char 是否处理过brother strcut * 兄弟节点链表指针child struc
11、t * 子节点链表指针系统把初始的链接保存在了 init_url 文件中;把一些异常情况保存在了crawl.log 文件中;把下载的网页文件保存在了 page_db 文件夹中;把网页信息文件保存在 page_info 文件夹中;把网页中链接文件保存在了 page_url 文件夹中;把网页文件名称,网页信息文件名称,网页链接文件名称保存在link.db 文件中。3.3 系统各功能流程图(1) 主模块功能流程图如图 3-5:创建内存池初始化 U R L 队列调用下载模块和分析模块接口函数释放内存池图 3-4 主模块流程图需要说明的问题: 指向内存池的是一个全局变量指针。 初始的 URL 必须从文件中读取,然后调用函数 get_host()解析出 URL 的 host, page, dir, port。 必须要有全局变量指向 URL 队列的头。
Copyright © 2018-2021 Wenke99.com All rights reserved
工信部备案号:浙ICP备20026746号-2
公安局备案号:浙公网安备33038302330469号
本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。