网络爬虫的设计与实现毕业设计论文Word下载.docx
《网络爬虫的设计与实现毕业设计论文Word下载.docx》由会员分享,可在线阅读,更多相关《网络爬虫的设计与实现毕业设计论文Word下载.docx(46页珍藏版)》请在冰豆网上搜索。
![网络爬虫的设计与实现毕业设计论文Word下载.docx](https://file1.bdocx.com/fileroot1/2023-1/26/1b2ecafa-d408-4087-9e7f-63fa955fb9b9/1b2ecafa-d408-4087-9e7f-63fa955fb9b91.gif)
但是,这些通用性搜索引擎也存在着一定的局限性。
不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果包含大量用户不关心的网页。
所以需要一个能基于主题搜索的满足特定需求的网络爬虫。
为了解决上述问题,参照成功的网络爬虫模式,对网络爬虫进行研究,从而能够为网络爬虫实现更深入的主题相关性,提供满足特定搜索需求的网络爬虫。
二、参考文献
[1]Winter.中文搜索引擎技术解密:
网络蜘蛛[M].北京:
人民邮电出版社,2004年.
[2]Sergey等.TheAnatomyofaLarge-ScaleHypertextualWebSearchEngine[M].北京:
清华大学出版社,1998年.
[3]Wisenut.WiseNutSearchEnginewhitepaper[M].北京:
中国电力出版社,2001年.
[4]GaryR.WrightW.RichardStevens.TCP-IP协议详解卷3:
TCP事务协议,HTTP,NNTP和UNIX域协议[M].北京:
机械工业出版社,2002年1月.
[5]罗刚王振东.自己动手写网络爬虫[M].北京:
清华大学出版社,2010年10月.
[6]李晓明,闫宏飞,王继民.搜索引擎:
原理、技术与系统——华夏英才基金学术文库[M].北京:
科学出版社,2005年04月.
三、设计(研究)内容和要求(包括设计或研究内容、主要指标与技术参数,并根据课题性质对学生提出具体要求。
本课题的主要目的是设计面向主题的网络爬虫程序,同时需要满足的是具有一定的性能,要考虑到网络爬虫的各种需求。
网络爬虫应用宽度搜索技术。
对url进行分析,去重。
网络爬虫使用多线程技术,让爬虫具备更强大的抓取能力。
网络爬虫要实现对特定主题的爬取。
网络爬虫还要完成信息提取任务,对于抓取回来的网页提取出来:
新闻、电子图书、行业信息等。
对网络爬虫的连接网络设置连接及读取时间,避免无限制的等待。
研究网络爬虫的原理并实现爬虫的相关功能。
最终实现的网络爬虫应该能根据设定的主题,从设定的url进行一定深度的搜索,并最终得到需要的数据。
指导教师(签字)
年月日
审题小组组长(签字)
天津大学本科生毕业设计(论文)开题报告
课题名称
学院名称
软件学院
专业名称
软件工程
学生姓名
张凤龙
指导教师
陈锦言
(内容包括:
课题的来源及意义,国内外发展状况,本课题的研究目标、研究内容、研究方法、研究手段和进度安排,实验方案的可行性分析和已具备的实验条件以及主要参考文献等。
一.课题的来源及意义
为了解决这个问题,一个灵活的爬虫有着无可替代的重要意义。
二.国内外发展状况
对于网络爬虫的研究从上世纪九十年代就开始了,目前爬虫技术已经趋见成熟,网络爬虫是搜索引擎的重要组成部分。
网络上比较著名的开源爬虫包括Nutch,Larbin,Heritrix。
网络爬虫最重要的是网页搜索策略(广度优先和最佳度优先)和网页分析策略(基于网络拓扑的分析算法和基于网页内容的网页分析算法)。
三.研究目标
本论文主要研究搜索引擎的搜索器(网络爬虫程序)的设计与实现,实现简单的可在后台自动运行的爬虫程序。
1.可以多线程进行抓取。
2.可以进行面向主题的抓取。
四.研究内容
本课题研究的内容是如何使网络爬虫灵活高效。
1.如何具备更强的抓取能力。
2.如何分辨重复的网页内容。
3.如何确定主题相关性。
4.对于网络时延等的处理。
五.研究方法
网络爬虫还要完成信息提取任务,对于抓取回来的网页提取出来新闻等信息。
六.研究手段
参考网上开源的网络爬虫和各种网络爬虫相关的书籍,在windows系统环境下开发。
五.本课题进度安排:
2010.12.20—2011.03.10查阅资料完成任务书,完成开题报告
2011.03.11—2011.03.12开题报告会
2011.03.13—2011.04.24查阅资料,进行论文基本章节的写作,完成初稿,并完成进行代码编写
2011.04.25—2011.04.30毕业设计中期报告会
2011.05.01—2011.05.22系统设计结束并再次检查系统的可靠性。
2011.05.23—2011.06.22完成论文及答辩
六.本课题可行性分析
网络爬虫目前已经比较普遍,国内外有众多对网络爬虫的研究成果,大部分的技术难题已经有解决方案。
所以本课题的可行性较高。
八.实验条件
Windows操作系统;
互联网
九.主要参考文献
选题是否合适:
是□否□
课题能否实现:
能□不能□
摘要
本课题的主要目的是设计面向主题的网络爬虫程序,同时需要满足的是具有一定的性能,考虑到网络爬虫的各种需求。
为了适应不同需求,使网络爬虫可以根据预先设定的主题实现对特定主题的爬取。
关键词:
网络爬虫;
面向主题;
多线程
ABSTRACT
Themainpurposeofthisprojectistodesignsubject-orientedwebcrawlerprocesswhichisalsorequiredtomeetcertainperformance,takingintoaccountthediverseneedsofwebcrawlers.
WebCrawlerusesthetechnology.ofBreadth-firstsearch.Webcrawlerusesmulti-threadedtechnology,sothatspiderscrawlcanhavemorepowerfulcapabilities.SetconnectiontimeandreadtimeofthewebconnectionoftheWebcrawler,toavoidunlimitedwaiting.Inordertomeetdifferentneeds,sothatcrawlerscanachievepre-setthemecrawlingaspecifictopic.Researchtheprinciplewebcrawlerandandrealizetherelatedfunctions.
Keywords:
Webcrawler;
subject-oriented;
multi-threading
目 录
第一章 概述
1.1 课题背景
网络爬虫,是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。
另外一些不常使用的名字还有蚂蚁,自动索引,模拟程序或者蠕虫。
网络检索功能起于互联网内容爆炸性发展所带来的对内容检索的需求。
搜索引擎不断的发展,人们的需求也在不断的提高,网络信息搜索已经成为人们每天都要进行的内容.如何使搜索引擎能时刻满足人们的需求。
最初的检索功能通过索引站的方式实现,而有了网络机器人,即网络爬虫这个技术之后,搜索引擎的时代便开始一发不可收拾了。
1.2 网络爬虫的历史和分类
1.2.1 网络爬虫的历史
在互联网发展初期,网站相对较少,信息查找比较容易。
然而伴随互联网爆炸性的发展,普通网络用户想找到所需的资料简直如同大海捞针,这时为满足大众信息检索需求的专业搜索网站便应运而生了。
现代意义上的搜索引擎的祖先,是1990年由蒙特利尔大学学生AlanEmtage发明的Archie。
虽然当时WorldWideWeb还未出现,但网络中文件传输还是相当频繁的,而且由于大量的文件散布在各个分散的FTP主机中,查询起来非常不便,因此AlanArchie工作原理与现在的搜索引擎已经很接近,它依靠脚本程序自动搜索网上的文件,然后对有关信息进行索引,供使用者以一定的表达式查询。
由于Archie深受用户欢迎,受其启发,美国内华达SystemComputingServices大学于1993年开发了另一个与之非常相似的搜索工具,不过此时的搜索工具除了索引文件外,已能检索网页。
当时,“机器人”一词在编程者中十分流行。
电脑“机器人”(ComputerRobot)是指某个能以人类无法达到的速度不间断地执行某项任务的软件程序。
由于专门用于检索信息的“机器人”程序象蜘蛛一样在网络间爬来爬去,因此,搜索引擎的“机器人”程序就被称为“蜘蛛”程序。
世界上第一个用于监测互联网发展规模的“机器人”程序是MatthewGray开发的WorldwideWebWanderer。
刚开始它只用来统计互联网上的服务器数量,后来则发展为能够检索网站域名。
与Wanderer相对应,MartinKoster于1993年10月创建了ALIWEB,它是Archie的HTTP版本。
ALIWEB不使用“机器人”程序,而是靠网站主动提交信息来建立自己的链接索引,类似于现在我们熟知的Yahoo。
随着互联网的迅速发展,使得检索所有新出现的网页变得越来越困难,因此,在MatthewGray的Wanderer基础上,一些编程者将传统的“蜘蛛”程序工作原理作了些改进。
其设想是,既然所有网页都可能有连向其他网站的链接,那么从跟踪一个网站的链接开始,就有可能检索整个互联网。
到1993年底,一些基于此原理的搜索引擎开始纷纷涌现,其中以JumpStation、TheWorldWideWebWorm(Goto的前身,也就是今天Overture),和Repository-BasedSoftwareEngineering(RBSE)spider最负盛名。
然而JumpStation和WWWWorm只是以搜索工具在数据库中找到匹配信息的先后次序排列搜索结果,因此毫无信息关联度可言。
而RBSE是第一个在搜索结果排列中引入关键字串匹配程度概念的引擎最早现代意义上的搜索引擎出现于1994年7月。
当时MichaelMauldin将JohnLeavitt的蜘蛛程序接入到其索引程序中,创建了大家现在熟知的Lycos。
同年4月,斯坦福(Stanford)大学的两名博士生,DavidFilo和美籍华人杨致远(GerryYang)共同创办了超级目录索引Yahoo,并成功地使搜索引擎的概念深入人心。
从此搜索引擎进入了高速发展时期。
目前,互联网上有名有姓的搜索引擎已达数百家,其检索的信息量也与从前不可同日而语。
比如最近风头正劲的Google,其数据库中存放的网页已达30亿之巨。
随着互联网规模的急剧膨胀,一家搜索引擎光靠自己单打独斗已无法适应目前的市场状况,因此现在搜索引擎之间开始出现了分工协作,并有了专业的搜索引擎技术和搜索数据库服务提供商。
象国外的Inktomi,它本身并不是直接面向用户的搜索引擎,但向包括Overture(原GoTo)、LookSmart、MSN、HotBot等在内的其他搜索引擎提供全文网页搜索服务。
国内的XX也属于这一类(注),搜狐和新浪用的就是它的技术。
因此从这个意义上说,它们是搜索引擎的搜索引擎。
1.2.2 网络爬虫的分类
网络爬虫种类繁多,如果按照部署在哪里分,可以分成:
1,服务器侧:
一般是一个多线程程序,同时下载多个目标HTML,可以用PHP,Java,Python等做,一般综合搜索引擎的爬虫这样做。
但是,如果对方讨厌爬虫,很可能封掉服务器的IP,服务器IP又不容易改,另外耗用的带宽也是较贵。
2,客户端:
很适合部署定题爬虫,或者叫聚焦爬虫。
做一个与Google,XX等竞争的综合搜索引擎成功的机会微乎其微,而垂直搜诉或者比价服务或者推荐引擎,机会要多得多,这类爬虫不是什么页面都取的,而是只取关心的页面,而且只取页面上关心的内容,例如提取黄页信息,商品价格信息,还有提取竞争对手广告信息的。
这类爬虫可以部署很多,而且可以很有侵略性。
可以低成本大量部署,由于客户端IP地址是动态的,所以很难被目标网站封锁。
1.3 网络爬虫的发展趋势
目前,大多数的搜索引擎都是基于关键词的搜索引擎。
基于关键字匹配的搜索技术有较大的局限性:
首先,它不能区分同形异义。
其次,不能联想到关键字的同义词。
Web商业化至今,搜索引擎始终保持着网络上被使用最多的服务项目的地位,然而,随着网上内容的爆炸式增长和内容形式花样的不断翻新,搜索引擎越来越不能满足挑剔的网民们的各种信息需求。
搜索引擎的发展面临着两大难题:
一是如何跟上Internet的发展速度,二是如何为用户提供更精确的查询结果。
所以,传统的引擎不能适应信息技术的高速发展,新一代智能搜索引擎作为一种高效搜索引擎技术的在当今的网络信息时代日益引起业界人士的关注。
搜索引擎己成为一个新的研究、开发领域。
因为它要用到信息检索、人工智能、计算机网络、分布式处理、数据库、数据挖掘、数字图书馆、自然语言处理等多领域的理论和技术,所以具有综合性和挑战性。
又由于搜索引擎有大量的用户,有很好的经济价值,所以引起了世界各国计算机科学界和信息产业界的高度关注,目前的研究、开发十分活跃,并出现了很多值得注意的动向。
目前传统搜索引擎下,XX、谷歌等大厂商垄断了网络索引市场,因为它们的存在,日益庞大的互联网内容才能突破网络黑暗状态,变成可知的一个世界。
然而,传统搜索引擎并不能支持定制搜索和信息处理、挖掘,只能以WEB1.0的形式存在。
可以预见将来互联网信息抓取、挖掘和再处理,将成为人们越来越多的需求,而满足这种需求的,就是各种各样的爬虫与相关的信息处理工具。
现在网络上流行的信息采集工具、网站聚合工具,都是未来新一代爬虫的先驱,甚至已经具备其特点。
但是互联网本身,不管1.0还是2.0,还没有为爬虫时代的到来做好充分准备。
现在游行的SEO,就是强势搜索引擎条件下对网站结构产生的影响。
爬虫时代到来之后,互联网上会出现专门的信息站点,就是提供给爬虫看的站点。
传统的网络爬虫技术主要应用于抓取静态Web网页,随着AJAX/Web2.0的流行,如何抓取AJAX等动态页面成了搜索引擎急需解决的问题,因为AJAX颠覆了传统的纯HTTP请求/响应协议机制,如果搜索引擎依旧采用“爬”的机制,是无法抓取到AJAX页面的有效数据的。
AJAX采用了JavaScript驱动的异步请求/响应机制,以往的爬虫们缺乏JavaScript语义上的理解,基本上无法模拟触发JavaScript的异步调用并解析返回的异步回调逻辑和内容。
另外,在AJAX的应用中,JavaScript会对DOM结构进行大量变动,甚至页面所有内容都通过JavaScript直接从服务器端读取并动态绘制出来。
这对习惯了DOM结构相对不变的静态页面简直是无法理解的。
由此可以看出,以往的爬虫是基于协议驱动的,而对于AJAX这样的技术,所需要的爬虫引擎必须是基于事件驱动的。
第二章相关技术背景
2.1 网络爬虫的定义
定义1:
网络爬虫是一个自动提取网页的程序,它为搜索引擎从Web上下载网页,是搜索引擎的重要组成部分。
通用网络爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL列表;
在抓取网页的过程中,不断从当前页面上抽取新的URL放入待爬行队列,直到满足系统的停止条件。
定义2:
主题网络爬虫就是根据一定的网页分析算法过滤与主题无关的链接,保留主题相关的链接并将其放入待抓取的URL队列中;
然后根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。
所有被网络爬虫抓取的网页将会被系统存储,进行一定的分析、过滤,并建立索引,对于主题网络爬虫来说,这一过程所得到的分析结果还可能对后续的抓取过程进行反馈和指导。
定义3:
如果网页p中包含超链接l,则p称为链接l的父网页。
定义4:
如果超链接l指向网页t,则网页t称为子网页,又称为目标网页。
主题网络爬虫的基本思路就是按照事先给出的主题,分超链接和已经下载的网页内容,预测下一个待抓取的URL及当前网页的主题相关度,保证尽可能多地爬行、下载与主相关的网页,尽可能少地下载无关网页。
2.2 网页搜索策略介绍
网页的抓取策略可以分为深度优先、广度优先和最佳优先三种。
深度优先在很多情况下会导致爬虫的陷入(trapped)问题,目前常见的是广度优先和最佳优先方法。
2.2.1 广度优先搜索策略
广度优先搜索策略是指在抓取过程中,在完成当前层次的搜索后,才进行下一层次的搜索。
该算法的设计和实现相对简单。
在目前为覆盖尽可能多的网页,一般使用广度优先搜索方法。
也有很多研究将广度优先搜索策略应用于聚焦爬虫中。
其基本思想是认为与初始URL在一定链接距离内的网页具有主题相关性的概率很大。
另外一种方法是将广度优先搜索与网页过滤技术结合使用,先用广度优先策略抓取网页,再将其中无关的网页过滤掉。
这些方法的缺点在于,随着抓取网页的增多,大量的无关网页将被下载并过滤,算法的效率将变低。
2.2.2 最佳优先搜索策略
最佳优先搜索策略按照一定的网页分析算法,预测候选URL与目标网页的相似度,或与主题的相关性,并选取评价最好的一个或几个URL进行抓取。
它只访问经过网页分析算法预测为“有用”的网页。
存在的一个问题是,在爬虫抓取路径上的很多相关网页可能被忽略,因为最佳优先策略是一种局部最优搜索算法。
因此需要将最佳优先结合具体的应用进行改进,以跳出局部最优点。
将在第4节中结合网页分析算法作具体的讨论。
研究表明,这样的闭环调整可以将无关网页数量降低30%~90%。
2.3 判断相关度算法
主题爬虫的系统组成最初考虑是对页面的过滤,不像普通爬虫对所有页面的链接进行处理,先对页面与受限领域的主题相关度进行分析,只有当其主题相关度符合要求时才处理该页面中的链接,因为如果该页面和本领域比较相关,它所包含的链接和领域相关的几率也较大,这样提高了爬行精度,虽然会遗漏少数页面,但综合效果是令人满意的。
因此,主题相关度的分析是主题爬虫设计的关键。
(一)主题相关度计算模型
垂直搜索引擎与通用搜索引擎最大的区别在于垂直搜索引擎是面向某个领域的,因而垂直搜索引擎的网络蜘蛛只采集与主题相关的网页,与主题无关的网页将被丢弃,将此类网络蜘蛛称为主题蜘蛛[6-8]。
主题蜘蛛将网页下载到本地后,需要使用基于内容的主题判别方法计算该网页的主题相关度值,主题相关度低于某一阈值的网页被丢弃。
主题相关度的计算方法有布尔模型和向量空间模型两种模型算法[10]。
1.布尔模型。
在主题判别时,布尔模型是很容易实现的。
在布尔模型[9]中,一个文档通过一个关键词集合来表示。
同时,某个主题也以关键词集合的形式来表示。
在判断文档与某主题的相关度的过程中,相当于是计算两个关键词集合的交集。
对基于布尔模型的主题判别模型来说,交集中含有的元素越多,则认为与主题的相关度就越高。
2.空间向量模型。
向量空间模型[11](VectorSpaceModel)由Salton等人于20世纪60年代末提出,是一种简便、高效的文本表示模型,其理论基础是代数学。
与布尔模型不同,向量空间模型把用户的查询要求和数据库文档信息表示成由检索项构成的向量空间中的点(向量),而通过计算向量之间的距离来判定文档和查询之间的相似程度(例如,用它们之间夹角的余弦作为相似性度量)。
然后,根据相似程度排列查询结果。
在向量空间模型中,文档被形式化为n维空间中的向量,把关键词的个数n作为空间向量的维数,每个关键词的权值作为每一维分量的大小,则主题用向量表示为:
A=(a1,a2,…,an),i=1,2,…,n,ai=wi
对于页面进行分析,统计关键词出现的频率,并求出频率之比,以出现的频率最高的关键词作为基准,其频率用xi=1表示,通过频率比,求出其他关键词的频率,则该页面对应向量的每一维分量为xiwi。
指定一个阈值r,当cos<
α,β>
=r时就可以认为该页面和主题是比较相关的,r的取值需要根据经验和实际要求确定,如果想获得较多的页面,可以把r设小一点,要获得较少的页面可以把r设的大一点。
(二)布尔模型与空间向量