




已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JIUJIANGUNIVERSITY毕业论文题目网络爬虫技术探究英文题目WEBSPIDERSTECHNOLOGYEXPLORE院系信息科学与技术学院专业计算机科学与技术姓名闻泽班级学号A081129指导教师邱兴兴二一二年五月I信息科学与技术学院学士学位论文摘要网络爬虫是一种自动搜集互联网信息的程序。通过网络爬虫不仅能够为搜索引擎采集网络信息,而且可以作为定向信息采集器,定向采集某些网站下的特定信息,如招聘信息,租房信息,以及网络营销常要的邮箱地址信息等。本文通过JAVA实现了一个基于广度优先算法的爬虫程序。本论文阐述了网络爬虫实现中一些主要问题为何使用广度优先的爬行策略,以及如何实现广度优先爬行;系统实现过程中的数据存储;网页信息解析等。通过实现这一爬虫程序,可以搜集某一站点的所有URLS,并通过得到的URLS采集到页面的内容,在从内容中提取到需要的内容,如邮箱地址以及页面标题等。再将得到的URLS等采集到的数据存到数据库,以便检索。本文从搜索引擎的应用出发,探讨了网络爬虫在搜索引擎中的作用和地位,提出了网络爬虫的功能和设计要求。在对网络爬虫系统结构和工作原理所作分析的基础上,研究了页面爬取、解析等策略和算法,并使用JAVA实现了一个网络爬虫的程序,对其运行结果做了分析。关键词网络爬虫,广度优先,搜索引擎II信息科学与技术学院学士学位论文ABSTRACTTHEWEBSPIDERISANAUTOMATEDPROGRAMCOLLECTSINFORMATIONONTHEINTERNETTHEWEBSPIDERCANNOTONLYSEARCHENGINETOCOLLECTNETWORKINFORMATIONANDCANBEUSEDASDIRECTIONALINFORMATIONCOLLECTION,DIRECTEDACQUISITIONOFSOMESITESPECIFICINFORMATION,SUCHASRECRUITMENTINFORMATION,RENTALINFORMATION,ASWELLASNETWORKMARKETINGOFTENHAVETOEMAILADDRESSINFORMATIONJAVAIMPLEMENTATIONOFANALGORITHMBASEDONBREADTHFIRSTSPIDERPROGRAMTHISPAPERDESCRIBEDTHEDATASTOREDINTHEWEBSPIDERTOACHIEVESOMEOFTHEMAJORQUESTIONSWHYUSEABREADTHFIRSTCRAWLINGSTRATEGY,ASWELLASHOWTOIMPLEMENTTHEBREADTHFIRSTCRAWLINGSYSTEMIMPLEMENTATIONPROCESSWEBPAGEINFORMATIONTORESOLVETHROUGHTHEREALIZATIONOFTHISSPIDERCANCOLLECTALLOFASITESURLS,URLSCOLLECTEDBYANDGETTOTHEPAGECONTENT,TOEXTRACTFROMTHECONTENT,THECONTENT,SUCHASEMAILADDRESSANDPAGETITLEANDTHENGETTHEURLSCOLLECTEDWASDATASAVEDTOTHEDATABASETORETRIEVEINTHISPAPER,THEAPPLICATIONOFTHESEARCHENGINETOEXPLORETHEROLEANDSTATUSOFAWEBSPIDERSEARCHENGINE,WEBSPIDERFUNCTIONALITYANDDESIGNREQUIREMENTSWEBSPIDERSYSTEMSTRUCTUREANDWORKINGPRINCIPLEOFTHEANALYSISBASEDONSTUDYSTRATEGIESANDALGORITHMSOFTHEPAGECRAWLING,PARSING,ETCANDUSETHEJAVAIMPLEMENTATIONOFAWEBSPIDERPROGRAM,ITSOPERATINGRESULTSANALYSISKEYWORDSSPIDER,BREADTHFIRSTSEARCH,SEARCHENGINEIII信息科学与技术学院学士学位论文目录摘要IABSTRACTII1绪论11现状分析112系统开发背景213系统意义314论文主要的工作415论文结构42需求分析21系统非功能性需求522系统功能需求523系统数据流程分析524环境需求825本章小结93系统设计31系统结构设计1032爬行策略分析1233爬虫技术分析1434数据库设计17IV信息科学与技术学院学士学位论文35本章小结174系统实现41系统功能简介1842核心算法2043功能模块实现2144数据库实现3045本章小结335系统测试51抓取测试3452搜索测试3753本章小结386总结与展望致谢40参考文献411信息科学与技术学院学士学位论文1绪论11现状分析从雅虎最初的网页分类技术,谷歌PAGERANK开始,到目前的百度等搜索引擎的迅猛发展,搜索引擎在互联网中应用领域展示了越来越广泛的作用。搜索引擎的科学研究价值不仅仅体现在其高技术挑战性,而且表现在其对于整个互联网络乃至民生提供的便捷性和信息高速传达方式,对整个社会的高度的经济促进作用1。从2000年开始在国内的缓慢发展,到目前国内百度,谷歌,搜搜,搜狗,有道等搜索引擎林立,搜索引擎的研究还只是刚刚的开始,如何在WEB信息中寻找最符合用户需求的信息展示出来,这不仅在尺度上是空前巨大,而且规范条件也是非常的不确定。及其的系统往往是很难判别出用户真正需要的是什么信息的,而目前乃至以后,用户总是希望以最简短的搜索约束范围即用户输入的关键字搜索到自己想要的信息,所以系统得到的输入是一个笼统的模糊的概念,而这种笼统的不确定性的约束范围,和海量数据的处理,已经将搜索引擎研究技术乃至整个科学研究技术带入了一个真正的高度。在搜索技术中,对信息的处理,既要考虑到数据的客观性,又要考虑到行为的主观性。数据的客观性表现在WEB中数据形式的客观存在性,面对任何人,同一网页中的信息是不变的,而主观性则是指,每条信息对于不同用户不同需求所能提供的信息量区别是很大的,这个可以很深刻的理解一个介绍机器用法的网页对于新用户来说肯定是很有用的,而对于开发者来说,却不一定有用或者作用的层次不同了。搜索引擎技术中客观性和主观性存在很多这样的矛盾之处,而不同的处理方式则会导致最后传达信息量的巨大或细微差别,这是以前的科学技术研究的盲点,而针对目前的社会需求,这又是刻不容缓的需要解决的一个方面,越来越多的人已经对这个领域产生了强大的兴趣。2信息科学与技术学院学士学位论文搜索引擎技术带动了很多相关学科的发展,离散数学,矩阵技术的应用让大家对数学产生了广泛的兴趣,搜索引擎优化技术SEO成为了许多人研究和工作的方向,同时也是电子商务的强力武器。而搜索引擎对于人工智能的贡献更是真正具有伟大意义的自然语言理解,模式识别,机器学习,数据挖掘技术在搜索引擎的发展中得到了强大的提高。而文本分类,多媒体识别,海量数据挖掘,机器在线增量学习,在线分类类聚,信息抽取和摘取,命名等又和实际应用紧密的结合成商用搜索引擎,而其强大的资金后盾,也促进了WEB搜索和人工智能行业的大力发展。12系统开发背景随着信息时代的到来和发展,WEB上的信息正在飞速地增长,这带给人们前所未有护的丰富的信息资源。然而,在给人们提供丰富信息的同时,却在WEB信息的高效便捷使用方面给人们带来巨大的挑战一方面WEB上的信息种类繁多、丰富多彩,而另一方面却很难找到真正有用的信息。在信息社会中,没有控制和组织的信息不再是一种资源,它倒反而成为信息工作者的敌人。搜索引擎的问世,为快速、准确、有效地获取网络信息资源提供了极大的帮助。搜索引擎是为满足人们搜索网络信息的需要而开发的网络工具,是互联网信息查询的导航针,是沟通用户与网络信息的桥梁。搜索引擎的出现很大程度上解决了人们在WEB上查找信息的困难,但是随着信息多元化的增长,千篇一律给所有用户同一个入口显然不能满足特定用户更深入的查询需求。即现有搜索引擎在提供用户便利获取丰富的信息资源的同时,也存在着种种的不足之处。(1)查准率低对任意主题,都可能很容易地包含成百上千的文档,这会使得搜索引擎返回的文档数过于庞大,其中很多相关性并不大,或所包含的内容质量不高。(2)查全率低搜索引擎的索引能力正在越来越落后于网络的快速增长速度。(3)内容相对陈旧各个搜索引擎搜索到的文件有时是不再有效的,因为网页已被移至别处或不存在。有调查发现,几个不同搜索引擎检索到的第一个文件在3信息科学与技术学院学士学位论文网上存在的平均时间是186天。(4)信息分布不平衡有83的站点包含商业的内容,只有6的站点包含科学或教育的内容。因而,人们提出了对搜索引擎新的要求(L)运行在常规的软/硬件设备之上;(2)只采集某一特定学科或特定主题的WEB信息资源;(3)能够方便地对专题和学科进行配置。为了满足这些新的要求,主题爬虫应运而生。主题爬虫就是针对性的为某一特定领域、某一特定人群或某一特定需求提供的有一定价值的信息和相关服务。可以简单的说成是搜索引擎领域的行业化分工。由于主题爬虫分类细致精确、数据全面深入、更新及时,并且运用了人工分类以及特征提取等智能化策略,因此它将更加有效和准确。主题爬虫是主题搜索引擎的重要组成部分,它负责对用户感兴趣的某一主题的网页进行抓取。具备普通爬虫的功能,即通过网页的链接地址来寻找网页,从网站某一个页面通常是首页开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。主题爬虫还具备主题过滤的功能,即使爬虫尽可能多地爬行主题相关的网页,尽可能少地爬行无关网页,对非主题的网页进行剔除。因此,主题爬虫得到越来越多研究者的关注。主题爬虫的优势在于,由于WEB上的内容丰富多样,每个主题在其中占的比例都很小,需要采集的内容也相对较少,可以极大地减少时间和存储空间的要求。在时间上的优势保证了网页的及时更新。而且,主题信息采集搜集的内容单一,用户查找时得到的冗余和无用信息也较少2。13系统意义网络爬虫的工作是不停的抓取互联网上资源的信息,随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎SEARCHENGINE,例如传统的通用搜索引擎ALTAVISTA,YAHOO和GOOGLE等,作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,4信息科学与技术学院学士学位论文这些通用性搜索引擎也存在着一定的局限性,为了解决上述问题,定向抓取相关网页资源的网络爬虫应运而生。网络爬虫是一个自动下载网页的程序,它根据既定的抓取目标,有选择的访问万维网上的网页与相关的链接,获取所需要的信息。网络爬虫的准确高效直接关系到搜索引擎的功能是否强大3。14论文主要的工作(1)针对网络爬虫的工作原理,进行需求分析、结构分析、系统分析。(2)开始初期的实现,主要实现的功能是网页抓取、URLS提取、页面内容解析、数据存储等。(3)系统测试网络爬虫的功能,修改不完善的地方,尽量做到符合基本的功能要求。15论文结构本论文主要介绍的网络爬虫的开放过程,全文共分为五章第一章绪论,简要的介绍了系统的开放背景级研究现状,以及文本的工作概要;第二章系统需求分析,主要介绍了系统所要解决的问题,以及系统的体系结构和类结构;第三章系统总体设计,主要是介绍了系统实现的主要算法策略,以及具体的功能划分;第四章系统实现,主要介绍了实现的各个功能的具体代码的分析;第五章系统测试,主要是对整个系统进行各个模块的测试,是否符合要求;第六章总结与展望,主要讲述了整个系统完成后的心得以及系统的一些缺陷。论文的致谢和参考文献部分。5信息科学与技术学院学士学位论文2需求分析21系统非功能性需求所谓非功能性需求是指为满足用户业务需求必须具有且除功能需求外的特性。虽然此需求与系统业务逻辑无直接关系,但也影响着系统的质量,不能忽视。本系统的非功能性需求主要包括以下几个方面(1)易用性本系统在功能完善的情况下,用户界面尽量做到简洁友好、便于操作,并应有效地防止误操作的发生。(2)性能可靠本系统属于一个需要联网进行抓取数据的系统,因此需要做到用户在使用时,避免影响到用户上网浏览网页出现网速慢的问题。(3)通用性本系统可以适应各种系统环境,满足了不同类型用户的需求。22系统功能需求通过需求分析,确定本系统有以下一些基本功能(1)前台界面管理前台界面主要用于对用户输入进行判断处理,再将合法输入提交到处理单元。(2)SERVLET处理程序主要用于接收传来的初始URL,然后再调用SPIDER主程序。(3)SPIDER主程序主要的功能是建立初始队列、解析URLS、抓取内容、数据存储等系统核心的功能。(4)数据库管理主要用于存放抓取的数据保存以便用户的检索。23系统数据流程分析通过对网络爬虫的数据流动分析,得出数据流程如图21所示。6信息科学与技术学院学士学位论文将初始的URLS加入到等待队列启动爬虫程序从URL队列获取等待URL解析HTML,获取URLS重复URL吗绝对地址吗将URLS加入到URL等待队列将相对地址转换为绝对地址非法URL吗图21爬虫工作原理流程图网络爬虫是搜索引擎的核心部分,其名称出自SPIDER的意译,具有相同词义的词语还有SPIDER,ROBOTS,BOTS,WANDERER等等。网络爬虫定义有广义和狭义之分,狭义NOYESNONOYESYES7信息科学与技术学院学士学位论文上的定义为利用标准的HTTP协议根据超级链接和WEB文档检索的方法遍历万维网信息空间的软件程序,而广义则是所有能利用HTTP协议检索WEB文档的软件都称之为网络爬虫。网络爬虫是一个功能很强的自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。它通过请求站点上的HTML文档访问某一站点。它遍历WEB空间,不断从一个站点移动到另一个站点,自动建立索引,并加入到网页数据库中。网络爬虫进入某个超级文本时,它利用HTML语言的标记结构来搜索信息及获取指向其他超级文本的URL地址,可以完全不依赖用户干预实现网络上的自动“爬行”和搜索。下面将详细分析爬虫的工作流程,通过流程图来描述爬虫的工作原理,本网络爬虫工作原理如下。(1)将给定的初始URL加入到URL等待队列。(2)创建爬虫程序,启动爬虫程序。(3)爬虫线程从URL等待队列中取得任务URL,根据URL下载网页内容,然后解析网页内容,获取超链接URLS以及页面内容信息。如果获取到的URL为相对地址,则需要转换为绝对地址,然后在判断是否为站外地址,是则淘汰站外URLS,如果是不能访问的地址如错误URLS或者不能解析的URL地址,则也要删除掉。再判断这些URL是否已经被下载到,如果没有则加入到URL等待队列4。(4)继续重复的执行步骤(3),直到结束条件满足后则停止继续爬行。通过图21所示的爬虫工作原理流程图,我们可以清楚的知道爬虫的工作流程以及工作的原理。网络爬虫的主要目的就是爬取用户需要的内容,即尽可能的爬取有关内容的页面,尽可能减少抓取无关页面,对非主题的网页进行剔除,确保网页的质量。因而,在设计主题爬虫时,本文主要采用两种手段来实现高质量主题网页的下载。一是对已经下载到本地的网页进行主题相关性判断,将相关的网页保存,无关的丢弃。二是分析已有信息,预测出与主题相关的URL进行下一轮抓取。在设计的过程中,要考虑到以下几点(1)稳定性设计的总体结构要合理,保证系统能够稳定运行。(2)高效性系统采用多线程技术对网页实现高效的抓取。8信息科学与技术学院学士学位论文(3)灵活性对系统的各个配置参数进行修改,使系统能够更好地运行。(4)主题性系统能够很好地应用于不同主题的网页抓取。基于以上原则,本文对主题爬虫的结构,数据结构、存储文件和所采用的主题采集策略进行了详细设计。24环境需求操作系统是WINXP;JAVA程序的编写工具是MYECLIPSE85M1;数据库是SQLSERVER2000。241开发平台此系统开发选用的平台是JAVASERVERPAGE简称JSPSQLSERVER数据库,它适应于WINDOWS操作系统并能很好的与其应用程序结合,而且SQLSERVER数据库也易操作,从而大大降低了编程难度。具体如下(1)WEB服务器采用TOMCAT55服务器,数据库管理系统为SQLSERVER。(2)采用了JDK16的环境。(3)开发工具使用DREAMWEAVER搭建系统页面框架。(4)使用MYECLIPSE工具开发。242系统开发工具本系统是基于JSPSQLSERVER数据库技术实现的,现对JSP技术和SQLSERVER数据库作简要的介绍。243开发语言JSP页面由HTML代码和嵌入其中的JAVA代码所组成。JSP具备了JAVA技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网等特点。JSP的技术的优势(1)一次编写,到处运行。在这一点上JAVA比PHP更出色,除了系统之外,9信息科学与技术学院学士学位论文代码不需要做任何更改。(2)系统的多平台支持。基本上可以在所有平台上的任意环境中开发,在任意环境中进行系统部署,在任意环境中扩展。相比ASP/PHP的局限性是显而易见的。(3)JSP技术是用JAVA语言作为脚本语言的。JAVA语言是成熟的、强大的、易扩充的编程语言。(4)高效性与安全性。JSP在执行前先被编译成字节码,字节码由JAVA虚拟机解释执行,比源码解释效率高。(5)可维护性。由于JSP技术是一种开放的、跨平台的结构,因此WEB服务器、平台及其他组件能很容易升级或切换,且不会影响JSP基本的应用程序。(6)多样化和功能强大的开发工具支持。JAVA已经有了许多非常优秀的开发工具,而且许多可以免费得到,并且其中许多已经可以顺利的运行于多种平台之下。244数据库SQLSERVER是微软公司的一款数据库产品,它是关系型数据库,针对电子商务、数据仓库和在线商务解决方案的卓越的数据平台。它执行效率高,可在多用户之间有效的分配可用资源,比如内存、网络带宽和磁盘I/O等。另外,SQLSERVER可以动态的将自身配置成能有效地使用客户端桌面的可用资源5。25本章小结这章主要是明确系统开发的需求分析,明确系统要实现的功能,确立系统的功能模块,按照系统开发的流程,先确立系统要实现的功能模块,最后确立系统的用户需求的定位,本需求分析报告的目的是规范化本软件的编写,旨在于提高软件开发过程中的能见度,便于对软件开发过程中的控制与管理,同时提出了网络爬虫软件开发过程,便于程序员与操作者之间的交流、协作,并作为工作成果的原始依据,同时也表明了本软件的共性,以期能够获得更大范围的应用。10信息科学与技术学院学士学位论文3系统设计31系统结构设计系统总体结构是首先通过前台搜索界面输入给定的URL地址传递给SERVELET程序,SERVELET程序再调用后台处理程序,处理程序接收到消息,然后开始页面内容解析。如图31所示。图31系统总体结构从图31可以看到,本系统主要的功能模块有前台用户模块、后台处理模块、前台用户界面SERVELET程序消息传递前台用户模块初始化URL队列URL解析URL合法检测页面内容提取后台处理模块数据存储用户检索连接数据库数据库查询数据库管理模块数据存储网络爬虫系统结构图11信息科学与技术学院学士学位论文数据库管理模块等。网络爬虫系统的前台结构如图32所示。图32系统前台结构网络爬虫系统后台结构如图33所示。图33系统后台结构广度优先队列管理该队列主要是用于临时存放解析出来的URL,本系统通过URLNODE类实现URL队列的管理。数据库连接管理数据库连接是通过DBOPERATOR类实现。数据存储管理本系统数据存储是用SNATCH方法实现,该方法将提取的内容存储到数据库中。页面读取提取管理页面读取与提取主要是由READFILECONTENT和PARSECONTENT方法实现,前者用于从给定的URL中读取页面内容,后者用于提取网络爬虫系统前台前台搜索前台爬行显示搜索结果调用后台主程序网络爬虫系统后台广度优先队列管理数据存储管理页面读取提取管理URL解析管理URL合法检测管理数据库连接管理12信息科学与技术学院学士学位论文重要的信息。URL解析管理该模块主要是用于从种子URL中不断的解析URLS,并放到队列中。实现该功能模块的主要方法是PARSEHREF。URL合法检测管理该模块的作用是检测解析出来的URL是否合法即是否是站内地址、不能访问的地址、文件地址和已访问地址。32爬行策略分析因为本论文实现的爬虫程序的初衷是尽可能遍历某一站点所有的页面的URL以及页面内容。广度优先算法的实行理论是覆盖更多的节点,所以此爬虫程序选择了广度优先算法。广度优先算法实现起来比较简单,只需定义一个数组类就可以实现广度算法。实现的策略基本是首先是获取最初始URL所对应HTML代码里面所有的URLS,当然都是合法的,非法的URLS都会通过检查类剔除掉。然后依次获取这些URLS对应的HTML代码里面的URLS,当这一层所有的URLS都下载解析完后,在获取下一层URLS的信息。通过这种循环的获取方式实现广度优先爬行。如图34所示6。图34爬行策略树形图如图34,假如A代表初始的URL,B、C、D为以A获取的3个URLS,E、F、G为以B获取的URLS,H、I、J为以C获取的URLS,以此类推。那么这些URLS获取的顺序就是A、B、C、D、E、F、G、H、I、J、K、L、M、N、O、PABCDEFGHIJKLMNOP13信息科学与技术学院学士学位论文这样一个顺序。当获取到B的URLS之后,并不会马上去解析这些URLS,而是先解析同B在同一层中的C、D对应的URLS。当这一层URLS全部解析完后,再开始下一层URLS。可以看到爬虫策略树形图是一个类似二叉树形的树形结构。广度爬行的优点是对数据抓取更容易控制些。对服务器的负载相应也明显减轻了许多。爬虫的分布式处理使的速度明显提高。现实起来也比其他的算法来的容易的。广度爬行的缺点是解析URLS效率不是太高。广度优先算法的等待队列设计如图35所示。14信息科学与技术学院学士学位论文AABCDBCCDBAEFGEFGHIJKLMONP图35URL等待队列图35列举了不同时间段时,URL等待队列的存储状态。第一个方框是将初始URLA加入到等待队列。第二个方框为,解析A对应HTML获取URLSBCD,同时删除A。第三个方框为,解析B对应HTML获取URLSEFG,同时删除URLB。第四个方框为,解析E对应HTML获取URLSNOP,并删除E。通过这样的存储方法实现广度爬行算法7。15信息科学与技术学院学士学位论文33爬虫技术分析331IDNS解析扩展将网页下载之前,首先要经过将URL地址解析成IP地址供SOCKET建立连接使用。DNS的解析过程的具体步骤如下(1)DNS客户机提出域名解析请求,并将该请求发送给本地的DNS服务器(2)本地的DNS服务器收到请求后,先查询本地的DNS缓存,如果有该记录项,则本地的DNS服务器就直接把查询的结果返回;(3)如果本地的DNS缓存中没有该纪录,则本地DNS服务器就直接把请求发给根DNS服务器,然后根DNS服务器再返回给本地DNS服务器一个所查询域根的子域的主DNS服务器的地址;(4)本地服务器再向上一步返回的DNS服务器发送请求,接收请求的服务器查询自己的缓存,如果没有该纪录,则返回相关的下级的DNS服务器的地址;(5)重复第四步,直到找到正确的纪录;(6)本地DNS服务器把返回的结果保存到缓存,以备下一次使用,同时将结果返回给客户机。332并行存储单一线程下载一个网页通常需要几秒钟,为了充分利用网络带宽和系统资源,网络爬虫需要打开许多SOCKET以便在同一时间连接到许多不同的HTTP服务器。有两种方法来管理多个并发连接使用多线程和使用非阻塞SOCKET与事件处理程序。由于网络爬虫的性能受网络和磁盘所限,多CPU的机器一般用处不是很大8。(1)多线程为了最大限度地提高客户端应用程序的响应能力,可以使用多线程。多线程可以大大提高应用程序的可用性和性能。地址解析后,每个逻辑线程将创建一个客户16信息科学与技术学院学士学位论文端SOCKET,连接SOCKET到服务器的HTTP服务上,发送HTTP请求头,然后读取SOEKET调用RECV函数,直到没有更多的字符可用,最后关闭SOCKET。最简单的方法是使用阻塞系统调用,它暂停客户端进程,直到请求完成,数据在用户指定的缓冲区可用。当一个线程挂起等待一个连接发送或接收完成时,其他线程可以执行。线程不是为每个请求动态生成的,而是提前分配的固定的线程数。这些线程使用共享并行的工作队列来得到要获取网页的URL。每个线程管理自己的控制状态和堆栈,但共享数据域。因此,一些实现倾向于使用进程而不是线程,这样当一个进程崩溃时,它不会破坏其他进程的状态。并发线程/进程有两个问题。首先,共享的数据结构将导致一些性能的损失,因为线程不能同时访问它们。第二,当线程或进程完成网页抓取,并开始修改文件存放库和索引时,他们可能会导致大量的交叉,随机在磁盘上读写,从而降低磁盘的查询时间。第二个性能问题可能是严重的。为了防止上述问题,众多的抓取线程或进程必须使用一个共享的内存缓冲,信号量和互斥锁。互斥以及由此形成的间接顺序化可能成为系统的严重瓶颈9。(2)非阻塞SOCKET和事件处理另一种办法是使用非阻塞SOCKET。使用非阻塞SOCKET,一个连接,发送或接收请求都不会阻塞当前线程,而会立刻返回。系统每隔一段时间对他们实行一次轮询,以判断是否可以进行读写操作。特别是,非阻塞SOCKET提供了SE1ECT系统调用,它可以让应用程序暂停,等待更多的数据可以读取或向SOCKET写入,直到预设计时器超时。SELECT事实上可以同时监控几个SOCKET,暂停请求进程,直到有SOCKET可以读或写。SELECT允许进程只是内核等待多个事件中的任一个发生,并仅在一个或多个事件发生或经过某指定的时间后才唤醒进程。333中文分词技术中文自动分词是网页分析的前提。文档由被称作特征项的索引词组成,网页分析是将一个文档表示为特征项的过程。在提取特征项时,中文信息文本中,词与词17信息科学与技术学院学士学位论文之间没有天然的分隔符,中文词汇大多是由两个或两个以上的汉字组成的,并且语句是连续书写的。这就要求在对中文文本进行自动分析前,先将整句切割成小的词汇单元,即中文分词或中文切词。自动中文分词的基本方法有基于字符串匹配的分词方法和基于统计的分词方法。基于字符串的分词方法又称为机械分词方法,它是按照一定的策略将待分析的汉字符串与一个已知的词典中的词条进行匹配,若在词典中找到某个字符串,则匹配成功。串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大或最长匹配,和最小或最短匹配按照是否中文自动分词是中文搜索引擎的关键环节,对搜索引擎系统来说,分词的准与词性标注过程相结合,又可以分为单纯分词方法和分词与标注相结合的一体化方法。另外一种是基于统计的分词方法,它的基本原理是根据字符串在语料库中出现的统计频率来决定其是否构成词。从形式上看,词是稳定的字的组合,因此在上下文如果相邻的字出现的次数越多,就越有可能构成一个词。因此字与字相邻共现的频率或概率能够较好的反映词的可信度。可以对语料中相邻共现的各个字的组合的频度进行统计,计算它们的互现信息,互信息量体现了汉字之间结合关系的紧密程度,当紧密程度高于某一个闭值时,便可认为此字组可能构成了一个词。这种方法只需对语料中的词组频度进行统计,不需要切分词典,因而又叫做无词典分词法或统计取词方法。但这种方法也有一定的局限性,会经常抽出一些共现频度高、但并不是词的常用字组,并且对常用词的识别精度差,时空开销大。实际应用的统计分词系统都要使用一部基本的分词词典常用词词典进行串匹配分词,同时使用统计方法识别一些新的词,即将串频统计和串匹配结合起来,既发挥匹配分词切分速度快、效率高的特点,又利用了无词典分词结合上下文识别生词、自动消除歧义的优点。词汇切分算法最重要的指标是准确,在兼顾准确性的情况下也要考虑时间复杂度。34数据库设计对于SQLSERVER数据库的设计。我建立了1个表,即WEBINFO,分别有ID,URL,TITLE,BODY字段,分别用于存放行数,地址,标题,以及网页内的邮箱地18信息科学与技术学院学士学位论文址。JAVA程序和数据之间的通信是通过JDBC实现的。URL信息存储表结构如表36所示。表36WEBINFO表结构字段名数据类型长度IDINT4URLSTRING50TITLEVARCHAR8000BODYTEXT100035本章小结此章节介绍的是如何通过一个给定的URL抓取整个网站内容的描述过程,其中页面中的内容解析是最重要的核心,通过对URL解析过程的分析,使我更加深入的认识到了网络爬虫的工作原理,为巩固JAVA的学习打下了坚实的基础。4系统实现系统实现是软件项目开发过程中的主要部分,在系统实现中要有简洁、美观、可读性好、整体统一等准则。19信息科学与技术学院学士学位论文41系统功能简介此爬虫程序主要分为三个部分任务执行端,任务前台界面,数据服务端。一个SPIDER任务执行端关联一个站点,下载一个基于URL链接的页面,并进行WEB页面解析,得到站内URL和发现新站点URL。SPIDER的任务执行需要维持一个URL队列任务执行端的URL队列中存储了站内URL。SPIDER要获取的对象是存在于网络上数以亿计的网页,这些网页以超链接形式互相联系在一起,每一网页对应一个超链接,也称统一资源定位符URL。我们可以把网络看做一个图MV,E,网络中的网页构成节点集V,他们之间的链接构成边集E,SPIDER正是从某一节点开始,沿着边,遍历图M,每访问到图中一个节点VI,就进行一定的处理。为了达到上述目的,一个SPIDER必须被设计成多线程的,A个线程并发地在网络上协同工作,才有可能在尽可能短的时间内遍历完网络中的网页。但网页数目是如此之大,如果任SPIDER程序无穷地搜索下去,那么程序几乎不能终止。所以我们限制SPIDER每次工作只访问一个站点。一个再大型的站点,其中的网页数目也是有限的,因此SPIDER程序能在有限的时间内结束。当SPIDER程序访问到一个网页,必须进行以下几项基本处理抽取网页中包含的文本;抽取网页中包含的URL,并将其区分为网站内URL或网站外URL。在这些URL队列上有大量的操作,包括URL查找、URL插入、URL状态更新等。如果SPIDER以300页每秒的速度下载WEB页面,平均将会产生2000多个URL,因此简单的采用内存数据结构存储这些URL队列有一定的问题,系统没有足够的内存空间;而采用直接持久化到数据库,则需要大量的数据库连接、查询等操作,系统效率会明显下降。如果采用URL压缩的办法,尽管在一定程度上可以平衡空间和时间的矛盾,但仍然不适用于大规模数据采集的SPIDER。任务前台界面主要工作是将用户输入的URL通过SERVLET传递到任务端。数据服务端负责存储解析好的数据。如图41所示10。20信息科学与技术学院学士学位论文HTTP协议INTERNET页面读取页面解析申请URLURL管理任务执行端数据库数据服务端JDBC管理任务前台界面SERVLETURL传递后台数据显示图41SPIDER体系结构42核心算法网络爬虫算法的设计目标是为了解决大规模数据的搜集效率问题。一方面,网络爬虫应该尽可能多的搜集网页;另一方面,网络爬虫在无法进行全面搜集的时候,应该优先选择一些重要的高质量的网页来进行搜集。网页搜集的算法设计一方面体21信息科学与技术学院学士学位论文现在设计高效的数据结构上,由于大量的数据无法完全存放在内存中,需要充分利用缓存技术来增加速度。421多线程抓取网页多线程抓取机制由图42中的网页抓取控制器来实现。给定一个URL列表,网页抓取控制器对其中的每一个URL顺序启动HTTP连接,将它们对应的网页内容全部下载到本地。多线程抓取机制的过程是这样的,一个进程负责从URL列表中读取下一个待搜集的URL,并将其放到临界区;另外一组进程的每一个都从临界区取出URL,然后启动HTTP连接进行相应处理,如图42所示。URL读取URL广度优先队列URL1URL2URL3URLMHTTP连接1HTTP连接2HTTP连接3INTERNETURL临界区HTTP连接组图42多线程抓取技术图42描述了多线程抓取机制的内部流程。该图右边的N个HTTP连接处理单元,每一个都单独处理一个HTTP连接,而左边的URL读取器则从URL链接优先队列中读取URL并将其写到URL临界区中。临界区最多可以存放M个URL。在实现时,URL读取器检查URL临界区中的URL数目,如果小于M,则继续往里面加URL;HTTP连接则每次都从URL临界区读取任务,除非M等于0。22信息科学与技术学院学士学位论文422编码格式转换技术WEB上的网页包含多种字符集和编码,搜索引擎系统必须对它们进行转换,采用统一字符集和编码方案。对于中文编码,由于中文为相形文字,字符个数多,不能用简单的ASCII字符集表示,所以出现了很多通用的编码格式,其中UTF8作为一种通用的统一字符编码在WEB上大量使用,GOOGLE的内部编码机制就是使用UTF8作为内码转换的。而对于中文,除了用UTF8编码,也存在国内标准的汉字编码,主要有三种国标码GB、大五码BIGS和汉字码HZ。其中GB和BIGS编码是8位编码,其特征是一个汉字用两个ASCII字符来表示,而且第一个ASCII字符的最高一位为1。还有一种常用的150编码15088591。在GNU的GLIBC库中有对这些编码的转换支持。43功能模块实现本系统主要有以下几个功能模块CHECK类该类中包含了一些检测URL是否合法的方法。DBOPERATOR类该类中包含了用于连接数据库的方法。URLNODE类该类用于维护URL等待队列。SPIDER类该类是主类,包含了网页数据读取以及URL的抽取,解析,保存等一些核心的方法。GETURL类该类用于读取前台传来的起始URL。421种子注入模块本模块主要工作是通过从给定初始的URL开始抓取,初始URL是由人工挑选的主题站点首页的URL。为了方便记录每个URL的状态以及统一管理,必须将其转化成URL信息库中的格式并存储于库中。种子注入模块就是对初始URL进行检查,将错误的过滤掉,合格的放入到URL信息库中。这些URL将被放到待抓取23信息科学与技术学院学士学位论文URL队列中,为第一轮的抓取服务。首先由INDEXJSP文件通过文本框传URL到SERVELET程序由GETURL类来响应,然后将再将接受到得URL通过调用主类SPIDER来抓取网页,SPIDER首先会向URL等待队列里请求一个URL。当得到任务URL以后,会通过这个URL得到对应的HTML代码。具体方法是调用READFILECONTENTSTRINGURLSTRING这个方法PUBLICSTATICSTRINGREADFILECONTENT_ENCODESTRINGURLSTRINGSTRINGBUFFERCONTENTNEWSTRINGBUFFERURLURLNULLBUFFEREDREADERREADERNULLSTRINGLINENULLTRYURLNEWURLURLSTRINGREADERNEWBUFFEREDREADERNEWINPUTSTREAMREADERURLOPENSTREAM,“UTF8“LINEREADERREADLINEWHILELINENULLCONTENTAPPENDLINE“N“LINEREADERREADLINEREADERCLOSECATCHMALFORMEDURLEXCEPTIONEEPRINTSTACKTRACESYSTEMOUTPRINTLNEGETMESSAGE24信息科学与技术学院学士学位论文SYSTEMOUTPRINTLN“URL“URLSTRING“ERROR“CATCHIOEXCEPTIONEEPRINTSTACKTRACESYSTEMOUTPRINTLNEGETMESSAGECATCHEXCEPTIONEEPRINTSTACKTRACESTRINGCONTENTSTRINGCONTENTTOSTRINGRETURNCONTENTSTRING这个方法是通过调用JAVA里面的URL这个类,可以用给定的URL构造这个类的一个实例,然后通过OPENCONNECTION这个方法得到HTML代码的数据流,然后再一行一行地把数据流转换成STRING字符串,再用STRINGBUFFER将这些字符串拼接成一个完整的HTML代码。当得到HTML代码以后,程序就会调用PARSECONTENTSTRINGCONTENT方法来解析HTML。422URL读取模块该模块从页面中提取URLS,主要是通过检索字符串中的HREF字符串来实现的。对于一个HTML代码,我寻找其中的HREF字符串,然后记录它的下表I。然后判断下表I1位置上的字符是双引号,单引号或者两者皆不是,然后选择对应的字符作为截取URL的终止标记。截取过后的HREF标记就剔除它与它前面的部分,以便而后的操作可以继续检索HREF标记,直到正个HTML代码中所有的HREF标记都被解25信息科学与技术学院学士学位论文析过后,操作终止。首页动作片恐怖片爱情片。例如上面那段HTML代码。我们先检索HREF标记,然后判断出第I1位为一个双引号,所以我们可以截取I1位到第2个双引号的位置。之间的这段字符串即为URL。当完成这一步操作后,原字符串被截取从“CLASS”开始。我们继续检索HREF标签,判断它的第I1位为一个单引号,所以我们又截取I1位到第2个单引号的位置。这步以后原字符串又被截取为“TARGET”开始,我们可以继续检索HREF标签。这个地方HREF没有接续任何符号,所以当我们没有发现单引号或双引号的时候,可以判断为这种情况。我们就去检索空格和高清在线科幻电影专区TOM365。例如上面的HTML代码,如果截取出来的URL为/SCIENCE/1_2HTML这种形式,即为相对地址。我们需要将其转化为绝对地址。假如这个相对地址的父URL为HTTP/WWWTOM365COM/。根据相对地址的概念,所以可以得到这个相对地址的绝对地址为HTTP/WWWTOM365COM/SCIENCE/1_2HTML。比如像上面的第2种URL,它包含完整的协议信息,域名地址。可以判断它为绝对地址12。当得到这些完整的URL地址以后,我们需要对其进行过滤。很多URL它们指向的文件不是HTML文件,而是一些CSS文件,或者RAR包文件,或者只是接续“”符号,代表只是调用一段JAVASCRIPT代码。像这种情况我们就直接抛弃这些URLS。下面是一段实行代码。代码通过检索URL字符串中是否包含“CSS”,“RAR”,“ZIP”等类似这些后缀来进行判断。STRINGPICTANDSOUND“JPEG“,“JPG“,“JPE“,“PNG“,“GIF“,“BMP“,“MA“,“MP3“,“DOC“,“TXT“,“EXE“,“ZIP“,“RAR“INTK0WHILEK3D手机通过观察得知,一般HREF标签是以HREF这样的形式出现的。但是不同的网站HREF后面的内容有所不同。比如HREF“URL”这样情况,我们就可以通过截取双引号之间的内容来获取URL;如果是HREFURL这种情况,我们就需要截取单引号之间的内容来获取URL;或者有些是HREFURL,我们需要以等号为开始标记,而这种情况通常结尾是空格或者符号。通过这种方法,我们获取网页中大部分的URLS。但是有些URLS是通过提交表单,或者通过JAVASCRIPT来跳转的。这些情况就需要更细致的考虑,才能获取13。424URL检测模块该模块主要是用于剔除非站内URL或无法访问的URL,因为截取出来的字符串,可能为相对地址或者绝对地址。所以需要判断URL为绝对地址,还是相对地址。相对地址需要先转化为绝对地址,再进行过滤。因为解析出来的URL地址可能是一些文件的地址,或者为JAVASCRIPT文件或者CSS文件。这些格式的URL是无法获取HTML代码的,也就不可能进行URL解析。所以我们需要过滤掉这些URLS。然后再进行URL消重处理,最后加入到URL等待队列14。为了把爬行限制在同一站点内需要截断指向站外的链接,保证SPIDER总在站内执行,即准确地根据超链URL判断超链是否指向站外。由RFC对URL的定义可知,URL的格式为PROTOCOL/HOSTPORT/PATHQUERY,一般情况下,同一网站内所有页面对应URL的HOST是相同的,所以可以使用HOST匹配作为判断超链是否指向29信息科学与技术学院学士学位论文站外的标准。进一步研究发现,很多大型网站中一个分类目录对应一个主机,所以前面的判断标准必须改进。研究HOST的组成可知,HOST的格式一般为站内分类站点标志串站点类型各异的串。站点类型串只有COM|EDU|GOV|NET|国家域名几种类型,所以我们取站点类型各异串前面的串,即站点标志串作匹配,超链URL的HOST中是否包含此串,为超链是否站内的判断标准。下面的这段代码就是判断是否非站内地址,代码如下STRINGHOST_INNER“CN“,“NET“,“COM“FORINTI0IHOST_INNERLENGTHIIFSPIDERINITURLCONTAINSHOST_INNERISTRINGSTRSPIDERINITURLSUBSTRING0,SPIDERINITURLINDEXOFHOST_INNERIIFURLSTRINGCONTAINSSTRSUBSTRINGSTRLASTINDEXOFHOST_INNERIRETURNTRUEELSERETURNFALSE425URL存储模块我们通过链表类URLNODE实现URL存储,链表的优点在于插入数量可以无限,所以通过该类较容易实现URL的管理。PUBLICVOIDSTARTSNATCHSTRINGURLSTRINTIDDBOPERATORTOMYSQLID_NUM1STRINGURLSTRINGURLSTRIFCHECKURLISWITHINTHELOWURLSTR/最初查询的网页默认为合法的SYSTEMOUTPRINTLN“URLERROR“30信息科学与技术学院学士学位论文URLQUEUEHEADNEWURLNODEURLQUEUEHEADSETNEXTNULLURLQUEUEHEADSETURLURLSTRINGLENGTHOFWAITEQUEUEURLQUEUEREARURLQUEUEHEADWHILEURLQUEUEHEADGETURLNULL/如果待抓取的队列不为空,则操作URLSTRINGURLQUEUEHEADGETURL/待队列非空时首元素出队列,则抓取UR
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 桉树工人砍伐协议书
- 2025产品代理合同
- 楼房楼板开裂协议书
- 水库转让合同协议书
- 死后金钱分配协议书
- 楼道鞋柜整改协议书
- 更新信息科技在医院的应用计划
- 会计与法律风险控制的协同策略计划
- 教室灯具捐赠协议书
- 油区治安联防协议书
- 音乐欣赏活动教案课件
- 总公司与分公司的交易合同6篇
- 2024中考模拟题历史历史(贵州贵阳卷)(考试版A3)
- 2025公务员考试题库及答案
- 2024年宿迁市融媒体中心招聘考试真题
- 《业绩分析报告实例》课件
- 2024电气工程师考试练习题分享试题及答案
- 统编版(2024)七年级下册道德与法治期中测试卷(含答案)
- 财务会计考试试题及答案
- 县某中学体育场项目可行性研究报告
- 2025江苏南京大数据集团有限公司招聘45人笔试参考题库附带答案详解
评论
0/150
提交评论