1、 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛是通过网页的地址来寻找网页,从某一个页面通常是首页开始,读取网页的内容,找到在网页中的其它地址,然后通过这些地址寻找下一个网页,这样一直循环下去,直到把这个所有的网页都抓取完为止。如果把整个互联网当成一个,那么网络爬虫就可以用这个原理把互联网上所有的网页都抓取下来。关键词:网络爬虫;Java;多线程;MySQL;Webmagic;CsdnblogABSTRACTWeb Crawler, usually called Crawler for short, is an important part of search e
2、ngine. With the high-speed development of information, Web Crawler- the search engine can not lack of- which is a hot research topic those years. The quality of a search engine is mostly depended on the quality of a Web Crawler. Nowadays, the direction of researching Web Crawler mainly divides into
3、two parts: one is the searching strategy to web pages; the other is the algorithm of analysis URLs. Among them, the research of Topic-Focused Web Crawler is the trend. It uses some webpage analysis strategy to filter topic-less URLs and add fit URLs into URL-WAIT queue. The metaphor of a spider web
4、internet, then Spider spider is crawling around on the Internet. Web spider through web link address to find pages, starting from a one page website (usually home), read the contents of the page, find the address of the other links on the page, and then look for the next Web page addresses through t
5、hese links, so has been the cycle continues, until all the pages of this site are crawled exhausted. If the entire Internet as a site, then you can use this Web crawler principle all the pages on the Internet are crawling down. Keywords:Web crawler;Multithreading;网络爬虫又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网
6、页追逐者,是一种按照一定的规如此,自动地抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。随着网络的迅速开展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(Search Engine),例如传统的通用搜索引擎AltaVista,!和Google等,作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性,如:(1)不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果包含大量用户不关心的网页。(2)通用搜索引擎的目标是尽可能大的网络覆盖率,有限
7、的搜索引擎服务器资源与无限的网络数据资源之间的矛盾将进一步加深。(3)万维网数据形式的丰富和网络技术的不断开展,图片、数据库、音频、视频多媒体等不同数据大量出现,通用搜索引擎往往对这些信息含量密集且具有一定结构的数据无能为力,不能很好地发现和获取。(4)通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询。c:iknowdocsharedatacur_workbaike.baidupic%E7%BD%91%E7%BB%9C%E7%88%AC%E8%99%AB51627110d833c895d143ad4bef92dd7b82025aafa50f06c8?fr=lemma&ct=
8、single为了解决上述问题,定向抓取相关网页资源的聚焦爬虫应运而生。聚焦爬虫是一个自动下载网页的程序,它根据既定的抓取目标,有选择的访问万维网上的网页与相关的,获取所需要的信息。与通用爬虫(general purpose web crawler)不同,聚焦爬虫并不追求大的覆盖,而将目标定为抓取与某一特定主题内容相关的网页,为面向主题的用户查询准备数据资源。在网络爬虫的系统框架中,主过程由控制器,解析器,资源库三局部组成。控制器的主要工作是负责给多线程中的各个爬虫线程分配工作任务。解析器的主要工作是下载网页,进展页面的处理,主要是将一些JS脚本标签、CSS代码内容、空格字符、HTML标签等内容
9、处理掉,爬虫的根本工作是由解析器完成。资源库是用来存放下载到的网页资源,一般都采用大型的数据库存储,如Oracle数据库,并对其建立索引。控制器控制器是网络爬虫的中央控制器,它主要是负责根据系统传过来的URL,分配一线程,然后启动线程调用爬虫爬取网页的过程。解析器解析器是负责网络爬虫的主要局部,其负责的工作主要有:下载网页的功能,对网页的文本进展处理,如过滤功能,抽取特殊HTML标签的功能,分析数据功能。资源库主要是用来存储网页中下载下来的数据记录的容器,并提供生成索引的目标源。中大型的数据库产品有:Oracle、Sql Server等。1.4 分类通用网络爬虫又称全网爬虫Scalable W
10、eb Crawler,爬行对象从一些种子 URL 扩大到整个 Web,主要为门户站点搜索引擎和大型 Web 服务提供商采集数据。 由于商业原因,它们的技术细节很少公布出来。 这类网络爬虫的爬行X围和数量巨大,对于爬行速度和存储空间要求较高,对于爬行页面的顺序要求相对较低,同时由于待刷新的页面太多,通常采用并行工作方式,但需要较长时间才能刷新一次页面。 虽然存在一定缺陷,通用网络爬虫适用于为搜索引擎搜索广泛的主题,有较强的应用价值。1.4.2 焦网络爬虫聚焦网络爬虫Focused Crawler,又称主题网络爬虫Topical Crawler,是指选择性地爬行那些与预先定义好的主题相关页面的网络
11、爬虫8。 和通用网络爬虫相比,聚焦爬虫只需要爬行与主题相关的页面,极大地节省了硬件和网络资源,保存的页面也由于数量少而更新快,还可以很好地满足一些特定人群对特定领域信息的需求。1.4.3 增量式网络爬虫增量式网络爬虫Incremental Web Crawler是 指 对 已 下 载 网 页 采 取 增 量式更新和只爬行新产生的或者已经发生变化网页的爬虫,它能够在一定程度上保证所爬行的页面是尽可能新的页面。 和周期性爬行和刷新页面的网络爬虫相比,增量式爬虫只会在需要的时候爬行新产生或发生更新的页面 ,并不重新下载没有发生变化的页面,可有效减少数据下载量,与时更新已爬行的网页,减小时间和空间上的
12、消耗,但是增加了爬行算法的复杂度和实现难度。增量式网络爬虫的体系结构包含爬行模块、排序模块、更新模块、本地页面集、待爬行 URL 集以与本地页面URL 集。1.4.4 Deep Web 爬虫Web 页面按存在方式可以分为表层网页Surface Web和深层网页Deep Web,也称 Invisible Web Pages 或 Hidden Web。 表层网页是指传统搜索引擎可以索引的页面,以超可以到达的静态网页为主构成的 Web 页面。Deep Web 是那些大局部内容不能通过静态获取的、隐藏在搜索表单后的,只有用户提交一些关键词才能获得的 Web 页面。例如那些用户注册后内容才可见的网页就属
13、于 Deep Web。 2000 年 Bright Planet 指出:Deep Web 中可访问信息容量是 Surface Web 的几百倍,是互联网上最大、开展最快的新型信息资源。目前,大多数的搜索引擎都是基于关键词的搜索引擎。基于关键字匹配的搜索技术有较大的局限性:首先,它不能区分同形异义。其次,不能联想到关键字的同义词。 Web商业化至今,搜索引擎始终保持着网络上被使用最多的服务项目的地位,然而,随着网上内容的爆炸式增长和内容形式把戏的不断翻新,搜索引擎越来越不能满足挑剔的网民们的各种信息需求。 搜索引擎的开展面临着两大难题:一是如何跟上Internet的开展速度,二是如何为用户提供更
14、准确的查询结果。所以,传统的引擎不能适应信息 技术的高速开展,新一代智能搜索引擎作为一种高效搜索引擎技术的在当今的网络信息时代日益引起业界人士的关注。搜索引擎己成为一个新的研究、开发领域。因 为它要用到信息检索、人工智能、计算机网络、分布式处理、数据库、数据挖掘、数字图书馆、自然语言处理等多领域的理论和技术,所以具有综合性和挑战性。又 由于搜索引擎有大量的用户,有很好的经济价值,所以引起了世界各国计算机科学界和信息产业界的高度关注,目前的研究、开发十分活跃,并出现了很多值得注意的动向。2.1 Java版本与配置图1 Java版本号图2 Java配置一图3Java配置二图4 Java配置三2.2
15、 Eclipse配置下载Eclipse压缩包,并将Eclipse压缩包解压图5解压后2.3 Maven配置下载maven的bin,在apache官方可以下载。版本类型下载下来之后,解压,找个路径放进去, 把bin的位置设在环境变量里,新建环境变量MAVEN_HOME图6 环境变量配置一在PATH里参加maven的bin的路径图7 环境变量配置二配置完毕后,在Windows命令提示符下,输入mvn -v测试一下,配置成功显示如图:图8 配置成功配置成功后开始在Eclipse中配置Maven,点击eclipse菜单栏Help-Eclipse Marketplace搜索关键字maven到插件Mave
16、n Integration for Eclipse 并点击安装即可,如如下图:图 9在Eclipse中配置maven重启后,为了使得Eclipse中安装的Maven插件,同windows中安装的那个一样,需要让eclipse中的maven重新定位一下,点击Window - Preference - Maven - Installation - Add进展设置图10 配置二三.网络爬虫模型的具体设计3.1.1 WebMagic概览WebMagic项目代码分为核心和扩展两局部。核心局部(webmagic-core)是一个精简的、模块化的爬虫实现,而扩展局部如此包括一些便利的、实用性的功能。WebM
17、agic的架构设计参照了Scrapy,目标是尽量的模块化,并表现爬虫的功能特点。3.1.2 Webmagic总体架构WebMagic的结构分为Downloader、PageProcessor、Scheduler、Pipeline四大组件,并由Spider将它们彼此组织起来。这四大组件对应爬虫生命周期中的下载、处理、管理和持久化等功能。WebMagic的设计参考了Scapy,但是实现方式更Java化一些。而Spider如此将这几个组件组织起来,让它们可以互相交互,流程化的执行,可以认为Spider是一个大的容器,它也是WebMagic逻辑的核心。WebMagic总体架构图如下:图11 WebMa
18、gic总体架构3.1.3 Webmagic项目组成WebMagic项目代码包括几个局部,在根目录下以不同目录名分开。它们都是独立的Maven项目。主要局部WebMagic主要包括两个包,这两个包经过广泛实用,已经比拟成熟:webmagic-corewebmagic-core是WebMagic核心局部,只包含爬虫根本模块和根本抽取器。WebMagic-core的目标是成为网页爬虫的一个教科书般的实现。webmagic-extensionwebmagic-extension是WebMagic的主要扩展模块,提供一些更方便的编写爬虫的工具。包括注解格式定义爬虫、JSON、分布式等支持。外围功能除此之
19、外,WebMagic项目里还有几个包,这些都是一些实验性的功能,目的只是提供一些与外围工具整合的样例。因为精力有限,这些包没有经过广泛的使用和测试,推荐使用方式是自行下载源码,遇到问题后再修改。webmagic-samples这里是作者早期编写的一些爬虫的例子。因为时间有限,这些例子有些使用的仍然是老版本的API,也可能有一些因为目标页面的结构变化不再可用了。最新的、精选过的例子,请看webmaigc-core的包和webmaigc-core的包webmagic-scriptsWebMagic对于爬虫规如此脚本化的一些尝试,目标是让开发者脱离Java语言,来进展简单、快速的开发。同时强调脚本的
20、共享。webmagic-seleniumWebmMgic与Selenium结合的模块。Selenium是一个模拟浏览器进展页面渲染的工具,WebMagic依赖Selenium进展动态页面的抓取。webmagic-saxonWebMagic与Saxon结合的模块。Saxon是一个XPath、XSLT的解析工具,webmagic依赖Saxon来进展XPath2.0语法解析支持。webmagic-avalonwebmagic-avalon是一个特殊的项目,它想基于WebMagic实现一个产品化的工具,涵盖爬虫的创建、爬虫的管理等后台工具。广度优先搜索策略是指在抓取过程中,在完成当前层次的搜索后,才进
21、展下一层次的搜索。该算法的设计和实现相对简单。在目前为覆盖尽可能多的网页,一般使用广度优先搜索方法。也有很多研究将广度优先搜索策略应用于聚焦爬虫中。其根本思想是认为与初始URL在一定距离内的网页具有主题相关性的概率很大。另外一种方法是将广度优先搜索与网页过滤技术结合使用,先用广度优先策略抓取网页,再将其中无关的网页过滤掉。这些方法的缺点在于,随着抓取网页的增多,大量的无关网页将被下载并过滤,算法的效率将变低。基于网页之间的,通过的网页或数据,来对与其有直接或间接关系的对象可以是网页或等作出评价的算法。又分为网页粒度、粒度和网页块粒度这三种。1 网页(Webpage)粒度的分析算法PageRan
22、k和HITS算法是最常见的分析算法,两者都是通过对网页间度的递归和规X化计算,得到每个网页的重要度评价。PageRank算法虽然考虑了用户访问行为的随机性和Sink网页的存在,但忽略了绝大多数用户访问时带有目的性,即网页和与查询主题的相关性。针对这个问题,HITS算法提出了两个关键的概念:权威型网页authority和中心型网页hub。基于的抓取的问题是相关页面主题团之间的隧道现象,即很多在抓取路径上偏离主题的网页也指向目标网页,局部评价策略中断了在当前路径上的抓取行为。文献21提出了一种基于反向BackLink的分层式上下文模型Context Model,用于描述指向目标网页一定物理跳数半径
23、内的网页拓扑图的中心Layer0为目标网页,将网页依据指向目标网页的物理跳数进展层次划分,从外层网页指向内层网页的称为反向。2 粒度的分析算法粒度的资源发现和管理策略也比网页粒度的更简单有效。粒度的爬虫抓取的关键之处在于站点的划分和站点等级(SiteRank)的计算。SiteRank的计算方法与PageRank类似,但是需要对之间的作一定程度抽象,并在一定的模型下计算的权重。划分情况分为按域名划分和按IP地址划分两种。文献18讨论了在分布式情况下,通过对同一个域名下不同主机、服务器的IP地址进展站点划分,构造站点图,利用类似PageRank的方法评价SiteRank。同时,根据不同文件在各个站
24、点上的分布情况,构造文档图,结合SiteRank分布式计算得到DocRank。文献18证明,利用分布式的SiteRank计算,不仅大大降低了单机站点的算法代价,而且克制了单独站点对整个网络覆盖率有限的缺点。附带的一个优点是,常见PageRank 造假难以对SiteRank进展欺骗。3 网页块粒度的分析算法在一个页面中,往往含有多个指向其他页面的,这些中只有一局部是指向主题相关网页的,或根据网页的锚文本明确其具有较高重要性。但是,在PageRank和HITS算法中,没有对这些作区分,因此常常给网页分析带来广告等噪声的干扰。在网页块级别(Block level)进展分析的算法的根本思想是通过VIP
25、S网页分割算法将网页分为不同的网页块(page block),然后对这些网页块建立page to block和block to page的矩阵,分别记为Z和X。于是,在page to page图上的网页块级别的PageRank为?Wp=XZ;在block to block图上的BlockRank为Wb=ZX。已经有人实现了块级别的PageRank和HITS算法,并通过实验证明,效率和准确率都比传统的对应算法要好。.2 网页内容分析算法基于网页内容的分析算法指的是利用网页内容文本、数据等资源特征进展的网页评价。网页的内容从原来的以超文本为主,开展到后来动态页面或称为Hidden Web数据为主,
26、后者的数据量约为直接可见页面数据PIW,Publicly Indexable Web的400500倍。另一方面,多媒体数据、Web Service等各种网络资源形式也日益丰富。因此,基于网页内容的分析算法也从原来的较为单纯的文本检索方法,开展为涵盖网页数据抽取、机器学习、数据挖掘、语义理解等多种方法的综合应用。本节根据网页数据形式的不同,将基于网页内容的分析算法,归纳以下三类:第一种针对以文本和超为主的无结构或结构很简单的网页;第二种针对从结构化的数据源如RDBMS动态生成的页面,其数据不能直接批量访问;第三种针对的数据界于第一和第二类数据之间,具有较好的结构,显示遵循一定模式或风格,且可以直
27、接访问。基于文本的网页分析算法1) 纯文本分类与聚类算法很大程度上借用了文本检索的技术。文本分析算法可以快速有效的对网页进展分类和聚类,但是由于忽略了网页间和网页内部的结构信息,很少单独使用。2) 超文本分类和聚类算法根据网页网页的相关类型对网页进展分类,依靠相关联的网页推测该网页的类型下述的三种网络特征,造成了设计网页爬虫抓取策略变得很难: 它巨大的数据量; 它快速的更新频率;动态页面的产生它们三个特征一起产生了很多种类的爬虫抓取。巨大的数据量暗示了爬虫,在给定的时间内,只可以抓取所下载网络的一局部,所以,它需要对它的抓取页面设置优先级;快速的更新频率说明在爬虫抓取下载某一个网页的时候,很有
28、可能在这个站点又有新的网页被添加进来,或者这个页面被更新或者删除了。最近新增的很多页面都是通过服务器端脚本语言产生的,无穷的参数组合也增加了爬虫抓取的难度,只有一小局部这种组合会返回一些独特的内容。例如,一个很小照片存储库仅仅通过get方式可能提供就给用户三种操作方式。如果这里存着四种分类方式,三种缩略图方式,两种文件格式,和一个禁止用户提供内容的选项,那么,同样的内容就可以通过48种方式访问。这种数学组合给网络爬虫创造的难处就是,为了获取不同的内容,他们必须筛选无穷仅有微小变化的组合。正如爱德华等人所说的:“用于检索的带宽不是无限的,也不是免费的;所以,如果引入衡量爬虫抓取质量或者新鲜度的有
29、效指标的话,不但伸缩性,连有效性都将变得十分必要爱德华等人,2001年。一个爬虫就必须小心的选择下一步要访问什么页面。网页爬虫的行为通常是四种策略组合的结果。 选择策略,决定所要下载的页面; 重新访问策略,决定什么时候检查页面的更新变化; 平衡礼貌策略,指出怎样防止站点超载; 并行策略,指出怎么协同达到分布式抓取的效果;选择策略:就现在网络资源的大小而言,即使很大的搜索引擎也只能获取网络上可得到资源的一小局部。由劳伦斯河盖尔斯共同做的一项研究指出,没有一个搜索引擎抓取的内容达到网络的16%(劳伦斯河盖尔斯,2001)。网络爬虫通常仅仅下载网页内容的一局部,但是大家都还是强烈要求下载的局部包括最
30、多的相关页面,而不仅仅是一个随机的简单的站点。这就要求一个公共标准来区分网页的重要程度,一个页面的重要程度与他自身的质量有关,与按照数、访问数得出的受欢迎程度有关,甚至与他本身的网址后来出现的把搜索放在一个顶级域名或者一个固定页面上的垂直搜索有关。设计一个好的搜索策略还有额外的困难,它必须在不完全信息下工作,因为整个页面的集合在抓取时是未知的。Cho等人Cho et al,1998做了第一份抓取策略的研究。他们的数据是斯坦福大学中的18万个页面,使用不同的策略分别模仿抓取。排序的方法使用了广度优先,后链计数,和局部pagerank算法。计算显示,如果你想要优先下载pagerank高的页面,那么,局部PageRank策略是比拟好的,其次是广度优先和后链计数。并且,这样的结果仅仅是针对一个站点的。Najork和Wiener (Najork and Wiener, 2001)采用实际的爬虫,对3.28亿个网页,采用广度优先研究。他们发现广度优先会较早的抓到PageRank高的页面但是他们没有采用其他策略进展研究
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1