分布式网络爬虫研究

  • 格式:doc
  • 大小:778.50 KB
  • 文档页数:31

淮北师范大学2013届学士学位论文分布式网络爬虫研究学院计算机科学与技术学院专业网络工程研究方向分布式网络爬虫研究学生姓名李邦柱学号20091204026指导教师姓名指导教师职称2013年 5 月16 日分布式网络爬虫研究计算机科学与技术学院2013届毕业生李邦柱指导教师:xx摘要:网络爬虫(Web Crawler),通常简称爬虫,是搜索引擎的重要组成部分。

随着信息化的快速推进,作为搜索引擎不可或缺的一部分——网络爬虫,一直是个热门的研究话题,它的好坏,直接决定了搜索引擎的未来。

目前来看,网络爬虫的研究方向主要包括对网页搜索策略的研究和网页分析算法的研究两大方向,其中,网页搜索中的主题网络爬虫是个研究趋势,它根据一定的网页分析算法,过滤与主题无关的链接,保留符合条件的链接并放入待抓取队列。

本论文简要介绍了一种构建简单分布式网络爬虫模型的方法,并且提供了行之有效的理论分析和算法。

主要讨论了单个网络爬虫抓取网页的原理,以后扩展后的多爬虫分布式的模型方法。

在分布式的网络爬虫中主要介绍了其体系结构以及分布式网络爬虫模型中运用的算法与数据结构分析。

本文并没有涉及复杂的算法研究,只是通过学习和使用现有平台和技术,研究基于Linux C++/C平台下的一个能够抓取同一域名下的、具有对URL有某个关键字限制下的部分网页的微型的网络爬虫,最后实现离线浏览功能。

从性质上来看,它更趋向与主题网络爬虫。

关键词:网络爬虫;分布式网络爬虫;URL;哈希表;多线程;LinuxThe Study of Distributed web crawlerSchool of Computer Science & Technology 2013 GraduatesOf Huaibei Normal UniversityLi Bang-ZhuAnhui Huaibei 235000, ChinaSupervised by Wang Shuai, InstructorAbstract:Web crawler, usually referred to crawler, is an important component of search engine. With the rapid development of information technology, as an indispensable part of search engine -- web crawler, has been a hot research topic. wheather it is good or bad, it directly determines the future of search engines. At present, the research of web crawler mainly includes two aspects: the study of web search strategy and web analysis algorithms. Among them, theme web crawler in web research is a research trend, which is based on a certain web page analysis algorithm and filters irrelevant links, retain qualified links and place into the capture queue.This paper briefly introduces a method to build a simple model of distributed web crawler and provides the effective theoretical analysis and the algorithm. It mainly discusses the principle of a single web crawler webpage and the distributed method of expanded multiple crawlers. In the distributed web crawler, it mainly introduces system structure, the analysis of algorithms and data structures used in distributed web crawler model. There is no complex algorithm research in this thesis. Through learning and using the existing platform and technology, the research and implementation of a Linux C/C++ platform can capture micro crawler which is under the same domain name and has a key word restrictions of URL in most web pages, and finally realize offline browsing. From the point of nature, it tends to theme web crawler.Keywords: Web Crawler,Distributed web crawler, URL,Linux Socket ,multi-thread, Linux目录绪论 (5)一、网络爬虫的功能以及原理的概述 (6)1.1 网页的搜索策略和网页的分析 (7)1.1.1 网页搜索策略的选择 (7)1.2 URL介绍 (7)1.3 URL的标准化 (8)1.4 网页抓取 (9)1.5 网页分析 (10)1.6 Linux Socket 通信 (13)1.6.1 Linux Socket简介 (13)1.6.2 TCP/IP (14)1.6.3 客户端Socket函数介绍 (15)1.7 Linux平台下单个爬虫程序运行及结果分析 (18)二、分布式网络爬虫模型结构的概述 (22)三、分布式网络爬虫中使用的主要算法与数据的分析 (24)3.1 爬虫进程启动后的工作流程 (25)3.2 判重服务进程启动后的主要工作流程 (26)3.2.1 判重服务进程正常启动的主要过程 (26)3.2.2 判重服务进程选举启动的主要过程 (26)3.2.3 判重服务进程对某个爬虫进程异常退出后的处理过程 (27)四、结束语 (29)五、致谢 (30)参考文献 (31)绪论大家常用的搜索引擎,例如Baidu,Google也都有自己的网络爬虫来帮他们抓取Internet海洋中的网页。

这里稍微插一段题外话,其实网络爬虫和网站维护经常都是对立的,因为有些爬虫刷新时间短,有些爬虫比较“笨”,会在网站里迷失了路等情况,引起给网站服务器发送大量请求,造成服务器压力过大而崩溃。

但话又说回来,一个设计良好的网络爬虫,再加上使用者良好的素质,是完全可以避免以上情况的。

总得来说,网络爬虫带来的好处远远大于它自身和使用者带来的坏处。

大家几乎每天都在直接或间接地享受网络爬虫带来的好处,那么一个普通的网络爬虫它到底是如何构成的,又是如何抓取网页的呢?一、网络爬虫的功能以及原理的概述网络爬虫是网络搜索引擎的主要部分,主要功能是在互联网中收集数据,是为信息检索功能提供可靠的数据支持。

一个网络爬虫算法的优劣以及效率的高低都将直接影响搜索引擎的众多性能指标,网络爬虫程序的最主要的功能就是在网络上对网页内容中超链接的提取与分析以及进行网页数据的抓取工作。

网络爬虫刚开始启动时,网络爬虫就会从一个可扩展的任务队列中得到一项任务,即待抓取的网页信息(比如标示该URL的文本信息以及URL),随后将该URL对应的网页文件下载到本地保存起来,并对其中的网页代码文本内容进行分析,提取其中的相关信息以及超链接,将提取的链接送入判重服务进程的队列中等待判重查询,然后将没有扩展过的URL和相关信息加入到任务队列中,等待后续扩展,以是单个爬虫使用的框架,看起来更像是主题爬虫的框架。

(见图1.1)。

图1.11.1 网页的搜索策略和网页的分析网络爬虫的搜索策略(爬虫的算法)的研究及其URL分析是目前研究的两大方向,一个成功的爬虫需要强大的搜索策略和快速的URL分析。

1.1.1 网页搜索策略的选择网络爬虫一般常用的网页搜索策略包括深度优先搜索、广度优先搜索、最佳优先搜索等。

深度优先搜索(Depth First Search):是指在抓取网页过程中,一直按一个方向搜索网页,直到碰到最底层,然后返回上一层,继续按原先的搜索策略搜索下去。

这种搜索策略在判定是否存在的问题上有些优势,但对于抓取网页来说,爬虫很容易陷入某个深渊,因为Internet网络本身就很复杂,再加上网页结构的复杂性,深度优先搜索策略几乎不被采用。

广度优先搜索(Breadth First Search):是指在抓取网页过程中,首先抓取第一层的网页,然后再抓取第二层的网页,依次类推……。

这种搜索策略使用一种叫队列的数据结构来完成,一旦找到新的URL,就把它加入到队列中;每次用队列最前面的URL 来抓取网页。

但它也有自己的缺点,那就是随着层数的增加,大量无关的网页会被加进来。

最佳优先搜索(Best First Search):和它的名字一样,这种搜索策略使用某种算法,用来计算每个URL的优先度,并按照这个优先度从大到小排列在一个数组中,每次要抓取的网页即优先度最大URL的网页。

这种搜索策略的优点可以避免广度优先搜索大量的无关网页被加进来,其缺点就是容易陷入某个相关度小的区域而忽略更大的区域。

因此对它来说,设计一种好的算法很重要,或者结合其它的算法。

本文采用的是第二种算法,因为其简单易实现,又因为本文需要抓取的网页在同一个域名下,且有关键字约束,所以可以防止大量无关的网页流入。

1.2 URL介绍统一资源定位符(URL,英语UniformResourceLocator的缩写)也被称为网页地址,是因特网上标准的资源的地址。

它最初是由蒂姆•伯纳斯-李发明用来作为万维网的地址的。

现在它已经被万维网联盟编制为因特网标准RFC1738了。

由于爬虫是通过URL的定位来抓取网页的,因此,需要了解URL的基本格式,才能继续下一步工作。