网络的爬虫地设计与实现完整版

上传人:博****1 文档编号:494311163 上传时间:2023-07-27 格式:DOC 页数:28 大小:1.79MB
返回 下载 相关 举报
网络的爬虫地设计与实现完整版_第1页
第1页 / 共28页
网络的爬虫地设计与实现完整版_第2页
第2页 / 共28页
网络的爬虫地设计与实现完整版_第3页
第3页 / 共28页
网络的爬虫地设计与实现完整版_第4页
第4页 / 共28页
网络的爬虫地设计与实现完整版_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《网络的爬虫地设计与实现完整版》由会员分享,可在线阅读,更多相关《网络的爬虫地设计与实现完整版(28页珍藏版)》请在金锄头文库上搜索。

1、word网络爬虫的设计与实现 摘 要网络爬虫将下载的网页和收集到的网页信息存储在本地数据库中以供搜索引擎使用,它是一个专门从万维网上下载网页并分析网页的程序。随着网络的快速开展,人们对搜索引擎的要求也越来越高,而网络爬虫的效率直接影响着搜索引擎的质量。本课题研究的是通用网络爬虫,它是从一个或假如干个初始网页的开始进而得到一个队列。伴随着网页的抓取又不断从抓取到的网页中抽取新放入到队列中,直到爬虫系统满足了停止条件。该课题主要涉与到了缓冲池技术,多线程技术,套接字技术,和SSL协议,正如此表达式,Linux网络编程技术,PHP+Apache的使用等相关技术。本说明书表示的网络爬虫是以Linux

2、C实现的,加以PHP语言编写的界面使用户更加方面的操作,利用Shell脚本和Apache服务器使得爬虫系统和界面很好的结合在一起。关键词:网络爬虫 缓冲池 正如此表达式 SSL协议 多线程目 次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致谢24参考文献25精彩文档1 引言随着网络技术日新月异的开展,互联网俨然已成为信息的最大载体。为了能够在浩瀚

3、的信息海洋中准确地查询用户所需要的信息,搜索引擎技术应运而生。目前比拟流行的搜索引擎是Google和百度,他们拥有着庞大的用户数量。作为搜索引擎的重要组成局部,网络爬虫的设计直接影响着搜索引擎的质量。网络爬虫是一个专门从万维网上下载网页并分析网页的程序。它将下载的网页和采集到的网页信息存储在本地数据库中以供搜索引擎使用。网络爬虫的工作原理是从一个或假如干初始网页的开始进而得到一个队列。伴随着网页的抓取又不断从抓取到的网页里抽取新的放入到队列中,直到爬虫程序满足系统的某一条件时停止。本说明书对课题背景进展简单介绍的同时,又对研究网络爬虫的意义进展了表示,在此根底上,详细的介绍来了利用C语言在li

4、nux系统上开发出多线程网络爬虫的设计步骤。1.1 课题选题背景搜索引擎是用户在网上冲浪时经常使用的一种工具,毫无疑问,每个用户都可以通过搜索引擎得到自己所需要的网络资源。搜索引擎一词在互联网领域得到广泛的应用,但是每个地区对它又有着不同的理解。在一些欧美国家搜索引擎常常是基于因特网的,它们通过网络爬虫程序采集网页,并且索引网页的每个词语,也就是全文检索。而在一些亚洲国家,搜索引擎通常是基于目录的搜索服务。总的来说:搜索引擎只是一种检索信息的工具。它的检索方式分为以下两种:一种是目录型的方式,爬虫程序把网络的资源采集在一起,再根据资源类型的不同而分成不同的目录,然后继续一层层地进展分类,人们查

5、询信息时就是按分类一层层进入的,最后得到自己所需求的信息。另一种是用户经常使用的关键字方式,搜索引擎根据用户输入的关键词检索用户所需资源的地址,然后把这些地址反应给用户。1.2 课题研究的意义网络在我们的生活中越来越重要,网络的信息量也越来越大,研究该课题可以更好的理解网络爬虫在搜索引擎中的作用以与网络爬虫的原理。现实中,一般的服务器大多是linux系统该课题更好的配合了linux系统上运行爬虫程序,加上界面更容易操作。21世纪是一个讲究信息安全的时代,于是上出现了越来越多的s(超文本传输安全协议)协议的,该课题很好的利用了SSL协议解决了下载s协议的问题。设备的内存是珍贵的,如何更加合理有效

6、地利用内存提高内存的利用率是值得研究的,该课题为了解决内存的利用使用了内存池来提高内存的使用率。2 需求分析网络爬虫是一个专门从万维网上下载网页并分析网页的程序。它将下载的网页和收集到的信息存储在本地数据库中以供搜索引擎使用。网络爬虫的工作原理是从一个或假如干初始网页的开始进而得到一个队列。伴随着网页的抓取又不断从抓取到的网页里抽取新的放入到队列中,直到爬虫程序满足系统的某一条件时停止。它是搜索引擎的重要组成局部。2.1 功能需求分析(1) 网页下载功能 能够下载任何协议和s协议的的网页。 构造请求中的GET请求。 分析响应请求。(2) 网页分析功能 提取网页标题。 提取网页关键字。 提取网页

7、摘要。 提取网页并统计数量。 把新参加到URL队列。(3) 内存池功能 能够分配固定大小的内存。 能够回收内存对象。 能够释放内存对象。 能够销毁内存池。 能够分配固定大小的内存。(4) 保存功能 能够正确保存网页以与网页信息到文件。 功能把系统运行中的异常写入日志文件。(5) 界面 可以配置参数和运行后台的爬虫系统。 能够查看运行结果。2.2 系统性能分析当用户使用系统时,系统需要能够对于一些异常状况系统能够记录并跳过此异常继续执行。系统需要具有较高的可移植性和可靠性。系统需要具有很好的可测试性和可维护性。网络爬虫系统是不停的从万维网上下载网页和采集网页信息的系统。由于网络爬虫系统是搜索引擎

8、的组成局部,搜索引擎要利用到爬虫系统的信息,所以系统要设计合理的存储文件并建立索引。3 系统设计3.1 系统工作流程图本系统通过IE共同访问Apache服务器的发布的页面、Apache服务器返回页面方便用户操作。(1) 系统物理结构如图3-1:图3-1 系统物理结构图(2) 界面的流程如图3-2:图3-2页面结构图.(3) 网络爬虫系统流程如图3-3:图3-3 系统流程图3.2 数据结构设计系统中主要是使用了链表作为URL队列,而链表中的每个结构体是一个数据单元,数据单元中的元素与其含义如表3-1:表3-1 数据结构表字段类型 含义host char *网页所在的主机 port int网络服务

9、器所使用的端口dirchar *网页所在的目录pagechar *网页文件名filechar *本地保存的文件名pageinfo char *保存网页信息的文件名urlchar *存储网页titlechar *网页的标题keywordschar *网页的关键字bodychar *网页的摘要protocalchar连接使用的协议 0 - 1- surl_countint网页中的数目typechar *网页类型codechar *网页编码page_sizeint网页大小is_handledchar是否处理过brotherstrcut *兄弟节点链表指针childstruct *子节点链表指针系统把

10、初始的保存在了init_url文件中;把一些异常情况保存在了crawl.log文件中;把下载的网页文件保存在了page_db文件夹中;把网页信息文件保存在page_info文件夹中;把网页中文件保存在了page_url文件夹中;把网页文件名称,网页信息文件名称,网页文件名称保存在link.db文件中。3.3 系统各功能流程图(1) 主模块功能流程图如图3-5:图3-4 主模块流程图需要说明的问题: 指向内存池的是一个全局变量指针。 初始的URL必须从文件中读取,然后调用函数get_host()解析出URL的host, page, dir, port。 必须要有全局变量指向URL队列的头。(2)

11、 功能模块流程图如图3-6:图3-5 下载模块流程图 需要说明的问题: 启动线程下载。 对于GET请求不变动的局部使用宏定义。 在服务器前需要建立socket套接字并进展域名解析。 注意报文头的承受。(3) 功能模块流程图如图3-7:图3-6 解析模块流程图需要说明的问题:1) 利用系统函数把网页读入内存。2) 利用正如此表达式提取相关信息。3) 把一个网页的URL写入文件保存。(4) 功能模块流程图如图3-8:图3-7 界面流程图需要说明的问题: 配置界面配置爬行深度的参数必须大于0。 每个界面必须有返回按钮和返回首页的按钮。 配置界面输入的URL不能为空。4 系统实现4.1 相关技术分析4

12、.1.1 多线程操作系统能够运行多线程还不到40年,但线程的出现带来了很多正面影响,使用多线程具有以下好处: (1) 和进程相比,多线程是多任务操作中十分“节俭的方式。在Linux操作系统中,开启新进程来达到多任务工作的目的是十分昂贵的,因为必须给新进程分配独立的地址空间以与用来维护代码段的众多数据表、堆栈段、数据段。而多个线程共享一样的内存空间和大局部数据,因此启动一个线程跟启动一个进程在所花费的空间上有很大的差异,同时,在启动需要的时间上线程要远远小于进程。(2) 通信机制。由于进程具有独立的数据空间,因此进程间只能通过通信的方式进展数据传递,显然这种方式是耗时又不方便的。由于线程共享数据

13、空间的特性,因此线程与线程通信更加方便。当然共享特性也带了一定的数据不一致的风险,但可以通过锁机制来解决。4.1.2 内存池申请内存空间几乎是每个系统必须涉与到的,而直接使用系统函数malloc和free进展内存分配和释放会产生额外的开销并且频繁使用还会产生大量内存碎片从而降低程序运行效率,同时还容易造成内存泄漏。内存池很好的解决了直接调用系统函数所带来的问题。也就说使用内存池进展内存申请、释放要比使用malloc和free方式快,系统开销小;不会造成内存碎片或有很少的内存碎片同时内存池很好的防止了内存泄漏。4.1.3 正如此表达式在本说明书所表示的网络爬虫系统中在提取网页中、提取网页标题等功

14、能函数中使用了正如此表达式。正如此表达式是Linux系统中一种非常重要的字符串搜索模式,是一组规如此字符的集合。这些规如此字符能够组成我们所需要的搜索规如此,效率高、功能强,可以极大地简化处理字符串时的复杂度。虽然标准C是不支持正如此表达式的,但是可以在POSIX函数库中的regex系列函数的辅助下在程序中运用它们。4.1.4 SSL协议SSL的全称是Secure Sockets Layer,它是一个为基于TCP的应用层协议提供安全连接的安全协议,为网络上数据的传输提供安全性保证,因而被广泛应用于网上银行、电子商务等金融领域。SSL提供的安全连接(如s)可以实现:(1) 连接的私密性:传输的数据是利用对称密钥进展加密,并利用RSA加密传输对称密钥算法中使用的密钥。(2) 身份验证:对服务器和客户端进展身份验证的方法是基于证书利用数字签名实现的。SSL服务器和客户端通过公钥根底设施提供的机制从认证机构获取证书。(3) 连接的可靠性:使用基于密钥的消息验证码来检验传输消息的完整性。消息验证码是将密钥和随机数转换为定长数据的一种算法

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号