计算机爬虫技术汇总十篇

时间:2023-12-02 09:28:36

序论:好文章的创作是一个不断探索和完善的过程,我们为您推荐十篇计算机爬虫技术范例,希望它们能助您一臂之力,提升您的阅读品质,带来更深刻的阅读感受。

计算机爬虫技术

篇(1)

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)07-0061-03

信息和知识爆炸增长的时代,搜索引擎成为人们获取信息的重要工具。搜索引擎释放出来的网络爬虫会大量占用互联网带宽,很可能在短时间内导致网站访问速度缓慢,甚至无法访问。应对此种情况,许多网站采取了一些措施来拦截网络爬虫的爬取。本文在分析网络爬虫原理的基础上,针对“反爬”网站提出了一些有效的爬取策略。

1网络爬虫概述

网络爬虫是抓取网页信息的一种程序,它可用来检查一系列站点的有效性,当按照需求抓取并保存数据时,是搜索引擎的重要组成部分。它还可以定向采集某些网站下的特定信息,比如招聘、二手买卖等信息。

网络上的网页许多都由超链接连接,故形成了一张网,网络爬虫因此也叫做网络蜘蛛,顺着网爬,每到一个网页就抓取信息并抽取新的超链接,用于进一步爬行的线索。网络爬虫爬行的起点叫做种子,可以自己设定也可以从某些系列网站获取。

1.1网络爬虫的组成

网络爬虫主要由控制器、解析器和资源库三部分组成。控制器是网络爬虫的控制中心,它负责分配线程并调用爬虫为其分配爬取任务;解析器是网络爬虫的核心,它的主要工作是下载网页并对网页中的信息进行处理,例如删除一些JS脚本、HTML标签和空格字符等,抽取特殊HTML标签的功能,分析数据功能;资源库是用于保存下载的网页资源,并提供生成索引的目标源。一般采用中大型的数据库存储,如Oracle、Sql Server等。

1.2网络爬虫的工作原理

网络爬虫的基本工作流程如下:

1)选取初始种子URL集合;

2)将URL集合放入待抓取URL队列;

3)从待抓取URL队列中取出待抓取URL,解析DNS,得到主机IP,将URL对应网页下载并存储至网页资源库。结束后将这些URL放入已抓取URL队列。

4)从已抓取URL队列中的URL分析出新的满足需求的URL,放入待抓取URL队列。

5)循环第3步,直至满足停止条件。

传统网络爬虫框架如图1所示。

1.3网络爬虫的搜索策略

网络爬虫在运行过程中,待抓取URL队列是很重要的一部分。待抓取URL队列中的URL如何排序也是一个值得研究的问题,因为这涉及先抓取那个页面,后抓取哪个页面。而排列URL顺序的方法,叫做抓取策略。常见的网络爬虫策略有:

1)广度优先搜索策略。在抓取过程中,由根节点开始,完成当前层次的搜索后才跳到下一层次的搜索。该策略实现较为简单,其基本思想是认为与初始URL在一定链接距离内的网页具有主题相关性的概率很大。

2)深度优先搜索策略。这种策略的主要思想是网络爬虫从起始页开始,一个链接一个链接跟踪下去,处理完这条线路之后再转入下一个起始页,继续跟踪链接。

3)最佳优先搜索策略。该策略通过计算 URL 描述文本与目标网页的相似度,或者与主题的相关性,根据所设定的阈值选出有效 URL 进行抓取。

4)反向链接数策略,反向链接数是指一个网页被其他网页链接指向的数量。反向链接数表示的是一个网页的内容受到其他人的推荐的程度。因此,很多时候搜索引擎的抓取系统会使用这个指标来评价网页的重要程度,从而决定不同网页的抓取先后顺序。

2如何应对站点反爬虫机制

网络爬虫会对目标站点发送大量请求,而这样的爬虫机制会消耗不少网站资源,这对于中小型网站的负载是 巨大的,甚至因此而崩溃,故不少网站都采取了反爬虫的机制。例如:通过识别爬虫的User-Agent信息来拒绝爬虫,通过Filter过滤网络爬虫,通过网站流量统计系统和日志分析来识别爬虫,利用网站的实时反爬虫防火墙实现策略。为了不被站点判断为爬虫而被拒绝访问请求,此处提供两种方法来维持爬虫的正常运转。

2.1降低访问请求频率

降低访问请求频率,在一定程度上是,模仿真人浏览页面的动作,故而不会轻易被网站所封杀,拒绝访问。实现的方法为在访问URL的程序中,将访问请求的线程休眠一段时间。

具体代码如下:

try { Thread.currentThread().sleep(4000);

} catch (InterruptedException e) {

e.printStackTrace();

}

Sleep的休眠时间按照需求而定,以毫秒(ms)为单位。这种策略的优点是减少了目标站点单位时间内的负载,而缺点则为爬虫爬取效率的降低。

2.2设置服务器

设置服务器,较之前一种方法来说则以爬虫的效率为首要要求,实质就是某些网站的反爬虫机制会封杀爬虫请求频率过高的主机的IP,为了解决这一问题,使用服务器,更换IP以及端口,解除站点对访问频率高的主机访问的限制。

有两种调用的方法,具体代码如下:

方法一:

Jsoup.connect("http:///cityjson").proxy(Proxy.Type.HTTP, "61.158.237.35", 3128).get();

方法二:

System.setProperty("proxySet", "true"); System.setProperty("http.proxyHost", "61.158.237.35"); System.setProperty("http.proxyPort", "3128");

Document a = Jsoup.connect("http:///cityjson").get();

System.out.println(a);

其中的IP与端口为 61.158.237.35:3128。

前后的效果如图2,3所示。

优点:保证爬虫执行不被站点封杀。只要有足够IP可满足爬取条件。

缺点:单位时间内消耗资源过多,给站点带来较大的负载。延迟加大,失败率提高。

2.3伪装用户

用户User-agent是HTTP协议中的一个字段,作用是描述发出HTTP请求终端的一些信息。通俗来说,就是判断访问网站对象的类别,每个浏览器和正规的爬虫都有固定的user-agent,因此只要将这个字段改成知名的user-agent就可以成功伪装了。对于伪装浏览器user-agent或知名爬虫user-agent,更推荐伪装浏览器,因为浏览器使用者可以是任何人,没有固定的IP,而知名爬虫user-agent一般都有固定IP。下面给出若干个浏览器的user-agent,每次发送请求时可随机选取一个。

Mozilla/4.0( compatible ;MSIE 8.0;Windows NT 6.0)

Mozilla/4.0( compatible ;MSIE 7.0;Windows NT 5.2)

Mozilla/4.0( compatible ;MSIE 6.0;Windows NT 5.1)

设置代码如下:

HttpGet getMethod = new HttpGet(“URl”);

getMethod.setHeader(“User-Agent”,”user agent内容”);

2.4 自动登录

有些网站一检测到某IP的访问量异常,就会马上提出要登录的要求。针对这种“反爬”策略,在登录前需要做一些准备,查清楚POST登录请求时要附带的参数,建议先用badboy录制登录过程,然后将这一过程导出为jmeter文件,最后用jmeter查看登录所需的参数。

3结束语

总之,为了防止爬虫被封,原则就是伪装成正常的用户,只要按照这个原则总有方法可循。不过若是能熟知一些反爬虫的原理,然后有针对地进行拆招应该还是十分有效的。

传统网络爬虫应用于抓取静态Web网页的信息,而AJAX/Web2.0的流行使得如何抓取动态页面信息成为目前网络爬虫的瓶颈。另外,网络爬虫的效率与网站稳定安全还未能完全达到两者兼得的状态。对于搜索引擎,它抓取的消耗较大,因此爬虫的效率、特性和抓取的质量就显得更为重要。在未来的大数据时代,网络爬虫技术地位更为重要,和人工智能技术相结合将是热门的课题。

参考文献:

[1] 郭小丹.几种开源网络爬虫功能比较[J].黑龙江科技信息,2015(25).

[2] 林雄强.网络爬虫[J].中国科技博览,2014(24).

[3] 赵全军,成功,李小正,等.一种改进的网络爬虫搜索策略[J].中国科技信息,2014(14).

[4] 刘庆杰,孙旭光,王小英.通过Filter抵御网页爬虫[J].网络安全技术与应用,2010(1).

篇(2)

[3] Wikipedia. Regular expression [EB/OL]. [2013?04?23]. http:///wiki/Regular_expression.

[4] World Wide Web Consortium. Document object model [EB/OL]. [2013?04?23]. http:///DOM.

[5] ALVAREZ M, RAPOSO J, PAN A, et al. DeepBot: a focused crawler for accessing hidden web content [C]// Proceedings of DEECS 2007. New York, USA: ACM, 2007: 18?25.

[6] 彭轲,廖闻剑.基于浏览器服务的网络爬虫[J].硅谷,2009(4): 49?50.

[7] 刘兵.基于JavaScript等多链接分析的主题爬虫设计实现[J].许昌学院学报,2010,29(2):87?90.

[8] 范轩苗,郑宁,范渊.一种基于AJAX的爬虫模型的设计与实现 [J].计算机应用与软件,2010,27(1):96?99.

[9] WebKit Open Source Project. The WebKit open source project [EB/OL]. [2013?03?24]. http://.

篇(3)

中图分类号:TP391.3

经过最近这些年的发展,搜索引擎已经改变了信息的获取甚至存储方式。用户不再需要将大量信息存储在终端机上,而是在需要信息的时候直接运用搜索引擎来获取,这样不仅节约了存储空间,也能获取到最新、最准确的数据,从某种意义上来说,由于有了搜索引擎,我们便可以把一些记忆任务交给机器来完成。搜索引擎有运行在大规模云计算的通用搜索引擎,也有一些行业搜索以及网站搜索。通用搜索引擎是大颚,每一只都有自己独立的领地。行业搜索是领头雁,是各行业的旗帜。而网站搜索则像一只只小麻雀,虽小却五脏俱全。无论是哪一种搜索引擎都包含采集数据的爬虫和索引库的管理以及搜索页面展现等部分,而网络爬虫则是开发一个搜索引擎最常用的技术。

网络爬虫(Crawler)的主要作用是获取互联网上的信息。例如,一个医药采购人员需要找到药品行业的有竞争力的厂家和价格等信息;金融公司员工需要找到有潜力的投资公司;媒体行业人士需要找到能够迅速变热的话题;这些都可以使用网络爬虫来抓取实现;网络爬虫从互联网上源源不断的抓取海量信息,搜索引擎结果中的信息都是来源于此。所以,如果我们把互联网比喻成一张覆盖全球的蜘蛛网,那么抓取程序就是在网上爬来爬去的蜘蛛。

网络爬虫需要实现的基本功能包括下载网页以及对URL地址的遍历。为了高效的快速遍历网站还需要应用专门的数据结构来优化。网络爬虫很消耗宽带资源,设计时需要仔细的考虑如何节省网络宽带资源。下面就基于C#语言的网络爬虫而言,进行优化设计。

1 网络爬虫的原理

我们在浏览网页的时候,每一个网页都可以链接到其他网站,那么搜索信息也可以从一个网站开始,跟踪所有网页上的链接,然后就可能遍历整个互联网。

为了更快的抓取到想到的信息,网页抓取首先从一个已知的URL地址列表开始遍历,在搜索引擎中,爬虫程序从一系列子链接中把这些初始网页中的URL提取出来,放入URL工作队列(Todo队列),然后开始遍历所有工作队列中的URL,下载网页并把其中新发现的URL再次放入工作队列,为了判断一个URL是否已经遍历过,需要把所有遍历过的URL放入历史表(Visited表)。遍历的流程如下图:

在抓取的过程中,将要访问的链接和已经访问过的链接分别存储在list中,爬虫从种子站点开始判断,如果有需要遍历的链接,则逐个遍历,在访问了某个链接后,便将该链接从Todo列表中删除,同时增加到Visited列队的尾部,最后再通过正则表达式提取链接。

服务器的名称通过DNS服务器转换成对应的IP地址,即通过DNS取得该URL域名的IP地址,需要选择一个好的DNS服务器,在Windows下DNS解析的问题可以用nslookup命令来解析,如:

C:\Users\Administrator>

服务器:

Address:202.108.53.181

应答:

名称:

Address:211.189.214.127

2 网络爬虫的架构

一般网络爬虫软件都由以下几个模块组成:

2.1 保存种子和爬取出来的URL的数据结构

农民会把有生长潜力的农作物籽用作下一季的种子,而技术人员则把一些活跃的网页用作种子URL,例如网站的首页或者列表页,因为在这些页面经常会发现新的链接。通常爬虫都是从一系列的种子URL开始爬取,一般从数据库表或者配置文件中读取这些种子URL。而保存待抓取的URL的数据结构却会因为系统的规模、功能不同有可能采取不同的策略。一个比较小的示例爬虫程序,可能就使用内存中的一个队列,或者是优先级队列进行存储。一个中等规模的爬虫程序,可能使用内存数据库来存储,如果内存不足还可以序列化到磁盘上。但是真正大规模的爬虫系统,是通过服务器集群来存储已经爬取出来的URL,并且还会在存储URL的表中附带一些其他信息,比如说pagerank值,供以后的计算使用。

2.2 保存已经抓取过的URL的数据结构

已经抓取过的URL的规模和待抓取的URL的规模是一个相当的量级。正如我们前面介绍的TODO和Visited,但是,它们唯一的不同是Visited表会经常被查询,以便确定发现的URL是否已经处理过。因此,如果Visited表数据结构是一个内存数据结构的话,可以采用散列表来存储,如果保存在数据库中的话,可以对URL列建立索引。

2.3 页面获取模块

当从种子URL队列或者抓取出来的URL队列中获得URL后,便要根据这个URL来获得当前页面的内容,获得的方法非常简单,就是普通的I/O操作。在这个模块中,仅仅是把URL所指的内容按照二进制的格式读出来,而不对内容做任何处理。

2.4 提取已经获取的网页的内容中的有效信息

从页面获取模块的结果是一个表示HTML源代码的字符串。从这个字符串中抽取各种相关的内容,是爬虫软件的目的。因此这个模块就显得非常重要。

通常在一个网页中,除了包含有文本内容还有图片,超链接等等。对于文本内容,首先把HTML源代码的字符串保存成HTML文件。关于超链接提取,可以根据HTML语法,使用正则表达式来提取,并且把提取的超链接假如到TODO表中,也可以使用专门的HTML文档解析工具。在网页中,超链接不光指向HTML页面,还会指向各种文件,对于除了HTML页面的超链接之外,其他内容的链接不能放入TODO表中,而要直接下载。因此,在这个模块中,还必须包含提取图片,JavaScript,PDF,DOC等内容的部分。在提取过程中,还要针对HTTP协议,来处理返回的状态码。

2.5 负责连接前处理模块,负责连接后处理模块和过滤器模块

如果只抓取某个网站的网页,则可以对URL按域名过滤。

2.6 多线程模块

爬虫主要消耗三种资源:网络宽带,中央处理器和磁盘。三者中任何一者都有可能成为瓶颈,其中网络快带一般是租用,价格相对昂贵。为了增加爬虫效率,最直接的方法就是使用多线程的方式进行处理。在爬虫系统中,将要处理的URL队列往往是唯一的,多个线程顺序地从队列中取得URL,之后各自进行处理(处理阶段是并发进行)。通常可以利用线程池来管理线程。

2.7 分布式处理

分布式计算是当今计算技术的主流。这项技术也可以同时用在网络爬虫上面。把抓取任务分不到不同的节点分布,主要是为了可扩展性,也可以使用物理分布的爬虫系统,让每个爬虫节点抓取靠近它的网站。

3 网络爬虫遍历与实现

网络爬虫的抓取原理是从互联网中的一个网页开始,根据网页中的超级链接逐个抓取网页中链接的其他网页。而网页通过超级链接互相链接,组成了一个庞大的无形的网,信息量十分庞大,网络爬虫不可能抓取所有的网页信息,所以使用网络爬虫抓取网页要遵循一定的原则,主要是广度优先原则和最佳优先原则。

广度优先是网络爬虫会先抓取起始网页中链接的所有网页,然后再选择其中的一个链接网页继续抓取在此网页中链接的所有网页。这是最常见的方式,这个方法也可以让网络爬虫并行处理,提高它的抓取速度。

最佳优先爬虫策略则又被称为页面选择问题,通常在有限宽带条件下,尽可能的照顾到重要性高的网页是一个很重要的考虑原则。实现最优先爬虫最简单的方式可以使用优先级队列(PriorityQueue)来实现TODO表,这样,每次选出来扩展的URL就是具有最高重要性的网页。在队列中,先进入的元素先出,但是在优先队列中,优先级高的元素先出队列。

例,假设有如下重要关系的节点D>B>C>A>E>F>I>H,则整个遍历过程如表所示。

如果一个新的连接请求进来的时候,连接池管理器检查连接池中是否包含任何没用的连接,如果有的话,则返回一个。如果连接池中所有的连接都忙并且最大的连接池数量没有达到,就创建新的连接并且增加到连接池。当连接池中在用的连接达到最大值,所有的新连接请求进入队列,知道一个连接可用或者请求超时。程序一开始初始化需创建若干数量的长链接。给它们设置一个标识位,这个标识位表示该链接是否空闲的状态。如果需要发送数据的时候,系统给它分配一个当前空闲的链接。同时,将得到的链接设置为忙,当数据发送完毕后,把链接标识位设置为闲,让系统可以分配给下一个用户,这样使得两种方式的优点都充分的发挥出来。

4 结束语

搜索引擎的使用,使人们能够更加方便快捷地从网络上获取想要的信息。随着互联网和计算机技术的不断发展,传统的通用搜索引擎已经很难满足人们的信息检索要求,而主题搜索引擎的产生为信息检索服务水平的提高带来了福音。而作为搜索引擎的基础部分,网络爬虫对于信息检索服务的实现起着举足轻重的作用。因而只有根据搜索引擎的发展和创新不断优化网络爬虫的设计,才能提高网络爬虫的性能以及主题搜索引擎的应能。

参考文献:

[1]刘伟.搜索引擎中网络爬虫的设计与实现[J].科技传播,2011,20.

篇(4)

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)17-0016-02

1 引言

现今,社会经济生活的各个方面变得越来越“互联网化”,互联网式经济贸易逐渐取代传统的经济模式,互联网金融市场的快速发展,在我国的经济结构中形成了服务于互联网金融的主流经济模式。致使各大商业银行也更加积极地开创互联网经济方面的业务,也强化了实体经济的服务效率。

“互联网金融+”这个新兴事物越来越多地融入我们的生活,改变了我们以往的生活方式。现在流行的打车软件,以电子支付为交易方式,改变了传统的支付方式;网络银行的快速发展为我们提供了新的理财方式;P2P信贷使得我们的消费和贷款有了新的途径;众筹产业的发展让每个人都可以参与到创新新模式中来,这些新的变化改变着我们的生活,使得我们生活增添了新的色彩,互联网金融在未来会越来越成为主流。

网络技术的快速发展,使得网络上各种重要的数据信息越来越多,互联网金融领域的发展也更加依赖于网络来获取重要的数据信息,以供研究发展。在互联网中,时时刻刻都有各式各样的金融网站实时的数据信息,如股票的走势、某个公司的运营情况、某个专家对当前经济形式的分析、在经济领域新产生了哪些技术等等。大型金融机构或者理财的个人都需要最前沿的工具来抓取这些必要的数据信息,以供研究。

在互联网金融领域,爬虫程序开发所面临的主要问题是采集性能和反封锁。大多数情况下,采用并发程度高的线程搜索网页数据是可行的,但是,前提是所访问的网站没有设置反爬虫的程序,例如设置防火墙、填写验证码什么的。很多时候有价值的信息都不会轻易被获取,因为网站可能会靠这些数据信息盈利,所以设置反爬虫的措施,限制访问的频率,一旦IP地址被封掉,什么程序就都没用了。所以,爬取数据的公司一般要运营维护一个IP地址池,同时,这也会出现IP是否稳定的问题,这些问题无法被避免,我们针对具体问题具体分析,最高效、最快速的完成爬取数据的任务。

目前,爬虫已在互联网金融领域的需求呈现出几何增长的趋势。未来互联网经济将在我国总的经济产业中占有更高的比重,获取一些重要的网络信息都得需要爬虫技术的参与,爬虫技术为适应新的需求,将会不断地更新发展。

2 关键方法和技术

2.1 多线程机制

网络爬虫需要下载规模非常庞大的网页,如果仅仅采用单线程来操作,采集效果会非常差,并且会浪费大量的时间,因为爬虫程序向服务器提交请求后要等待服务器的处理和返回结果,如果采用单线程,每个线程依次发送请求并等待服务器的依次响应,等待时间是所有网页处理过程的叠加,效率大大降低。因此,可采用多线程机制来减少个别网页的处理时间,以提高程序的效率。

2.2数据库访问技术

爬虫技术采用队列管理的方式,基于SQLserver数据库。在本程序中,我们通过JAVA中的jdbc来操作数据库,通过建立JDBC和ODBC之间的链接,即建立所谓的JDBC-ODBC桥接器,和数据库的连接工作由ODBC去完成。JDBC的作用就是允许程序向数据库发送SQL语句,而且可以指定数据的返回类型。

3 实现过程

3.1 爬虫程序中的主要类和函数

首先,创建InteralCrawler类,用来实现爬虫程序基本的功能,包括多线程机制获取网页、处理网页、搜索新的URL等功能。此外,InteralCrawler类还作为爬虫程序接口,并且由其对象管理线程。

CrawWork类用来创建工作对象,工作对象处理InteralCrawler所访问的网页链接。当程序启动时,CrawWork对象将请求处理网页链接。该对象调用InteralCrawler对象的getWorkload()方法,该方法将返回一个还未处理的网页链接。

3.3 多线程的设计

在我们使用多线程机制来设计爬虫时,大致流程的是:每个爬虫线程抓取的数据要聚集起来,再统一处理,然后让空闲的爬虫程序分去处理新的网页数据。这个工作流程可以让我们联想到master-slave模式,这个模式就相当于在建筑一个工程时,包工头和建筑工人之间的关系,包工头统一规划整个项目的实施流程并向工人下发任务,工人只需出力完成任务。根据这个模式,我们设计爬虫线程。如下图,多线程爬虫如图1所示。

线程的设计是爬虫程序的关键部分,爬虫线程通过最佳优先算法根据一个网页得到其所有链接网页的URL,再搜索所有链接到页面中的关键字。如果搜索到所需数据,爬虫程序通过窗口指针向用户报告。如果未搜索到数据,结束线程,抛弃所有变量,正常返回。

算法思想如下 :

4 总结

爬虫技术在互联网+时代具有广泛的实际应用价值,通过爬虫技术可以实现网页挖掘的核心算法。然而值得一提的是,爬虫在访问某些网页时,可能会遇到一些反爬措施,例如数据加密、网页权限等问题,有些网站只有有权限的用户能访问。网上有一些出售数据的网站他们希望网络爬虫能爬取到他们的报告(相当于给自己打了个广告),但是又不能让这些数据资源免费被爬虫程序爬取,网站会给网络爬虫一个用户名和密码,使得网络爬虫可以访问网站一部分数据,重要的数据会设置权限。

参考文献:

[1] 潘春华,常敏.面向web的信息收集工具的设计与开发[J].计算机应用研究,2002,13(6):144-148。

[2] 杜亚军.爬虫算法设计与程序实现[J].计算机应用,2004.

篇(5)

随着计算机和互联网技术的不断成熟和大量使用。怎样快速的帮用户在茫茫的互联网的海洋中找到需要的信息,已经成了互联网研究的一项重要的内容。为了让用户在互联网中快速有效的进行互联网搜索信息,一类被称为搜索引擎的搜索工具随之产生,给用户和他们所要搜索的信息之间提供了一座桥梁。而搜索引擎最重要的部分是网络爬虫,所以网络爬虫为搜索功能的实现奠定了重要的基石。

水稻是我国最重要的食品之一,在我国种植面积很大,分布全国各个地区。而影响我国每年的水稻产量的重要因素之一就是水稻的病虫害的发生,其控制水稻病虫害发生的问题一直是提高水稻产量的重要且急需解决的问题。

为结合科技力量进一步加快水稻病虫害防治的研究步伐,本文拟采用水稻病虫害图像网络爬虫搜索引擎,进一步推进水稻病虫害研究,有效改善水稻生产,进一步地促进我国水稻病虫害的法治,让我国的水稻产量得到有力的提升。

1 国内外研究现状

目前,基于爬虫技术的搜索引擎在互联网技术的飞速发展中闪耀,给农作物病虫害防治的研究提供了技术上的支持。同时,发达国家对水稻等作物病虫害防治情况的大力关注,越来越多的国家和机构加入使用爬虫技术来控制病虫害行列中来。

随着科学技术和生活水平的提高,网络已经成为人们生活的一部分,各种搜索引擎纷纷涌现,作为基础技术的爬虫技g也越来越成熟,国内许多搜索引擎巨头如百度,搜狗等等迅速向前推进,分别推出了各自的搜索引擎系统。同时,中国的“五年计划”高度关注农业发展,使得爬虫技术在农作物病虫害防治的问题上越来越受到公众的关注。

2 网络爬虫的定义

网络爬虫(也称为蜘蛛)是一种客户端程序或脚本,顾名思义,网络爬虫能像“蜘蛛”一样在特定的范围内获取到所需要的信息,网络爬虫是根据某些特定的规则来自动抓取网络上的信息。而且网络爬虫是搜索引擎的重要组成部分,通过对网页的自动提取,能从网页获取到搜索引擎所需的页面。在爬取网页信息时,为获取初始页面的URL列表,需从一个或多个初始网页的URL进行抓取,在抓取的过程中,自动将当前页面的新URL从队列中分类到抓取状态,直到满足系统的停止条件为止。

3 水稻病虫害图像网络爬虫设计

3.1 网络爬虫的模型分析

首先是抓取URL链接地址。从URL地址抓取开始,先确定URL是否重复,然后根据预先设置的广度来抓取图像,搜索图像时通过设计的算法和排序方式来进行搜索。搜索完成后将与主题相关的图像筛选出来,然后将筛选后的图下像载到本地中,与此同时也通过jdbc将图像存储到数据库中。然后任务列表再次开始抓取URL,使网络抓取器运行,依次循环,直到要抓取的URL线程完成为止。

3.2 网络爬虫的搜索策略

广度优先搜索策略是在当前搜索级别完成之后再执行下一级搜索。在尽可能多的页面的覆盖范围内,通常使用广度优先搜索方法来抓取用户所需要的信息,同时也因为该算法的设计和实现相对简单。有许多研究将广泛优先搜索策略应用于聚焦爬网程序。基本思想是,初始URL与页面之间的距离内具有一定的链接与主题的相关程度很大。另一种方法是使用广度优先搜索和网络过滤技术,首先采用广度优先策略来抓取页面,然后不相关的页面过滤掉。这些方法的缺点是随着爬网数量的增加,大量不相关的页面将被下载和过滤,并且算法的效率会降低

3.3 水稻病虫害图像网络爬虫设计

本设计通过研究异步JavaScript网络爬虫系统的关键技术问题,采用基于对象的程序切片算法,以及脚本执行引擎与切片模块的互操作技术进行设计。

将功能模块分为前台界面显示和后台数据抓取存库。前台界面显示主要分为两个部分:搜索导航部分和数据显示部分。界面分上下两个部分,上部分为搜索导航部分,比占40%;下部分为数据显示部分,比占60%。上部分是用来关键字搜索导航,对要搜索的水稻病虫害关键字进行全站搜索;下部分是用来显示搜索到的数据,用表格的形式分别显示水稻病虫害图片和相关介绍信息。后台数据抓取存库主要分为两个部分:抓取水稻病虫害数据和数据存入数据库。

通过关键字来获取并下载水稻病虫害图像主题的网络爬虫程序,下载满足客户需求的水稻病虫害图像。根据用户的不同需求,水稻病虫害主题网络爬虫程序需要实现以下目标:基于多线程设计,下载用户需求的所有的水稻病虫害图像,筛选出用户所需要的图像通过一定的正则表达式和算法,通过关键字来获取水稻病虫害图像主题的一个网络爬虫程序,通过设定的关键字来爬取网络上的图像,并下载满足客户需求的图像。

4 小结

运行爬虫程序后,在控制台输入要爬取的图像关键字,程序会在本地中生成一个image文件夹,文件夹内容包含html、img、txt三个文件夹,还有一个url.txt文本文件。Img文件夹是保存爬取下载的水稻病虫害图像,根据水稻病虫害的分类,img文件夹中可以实现八类不同病虫害图像的文件:稻曲病图像、稻瘟病图像、恶苗病图像、胡麻叶斑病图像、霜霉病图像、纹枯病图像、小球菌核病图像、叶鞘腐败病图像。

【参考文献】

篇(6)

中图分类号:TP393 文献标识码:A 文章编号:1009-914X(2015)05-0226-01

1 引言

随着互联网的高速发展,网络上的信息量迅速增加,特别是近些年来,网络信息呈爆发式增长。有时候我们访问网页时,网页上出现太多的不必要的信息,比如各种垃圾广告和植入信息。

在互联网的发展中,用户体验占据了至关重要的作用。正是由于每天都有巨大的信息量通过互联网传递给我们,所以我们要通过工具对其进行筛选,对于我们所需要的信息,则可以借助关键字来获取我们所想要的信息。

从上个世纪九十年代开始,人们就已经开展和研究网络爬虫。爬虫这项技术在现在已经非常成熟了,同时它也是搜索引擎的重要组成成分。Nutch,Larbin,Heritrix都是网络上很有名的开源爬虫。对于网络爬虫来说,网页搜索策略和网页分析策略都是很重要的部分。

现在对于大众来说,比较熟悉的爬虫引擎有雅虎、谷歌、百度等。这些搜索引擎和本文所要研究的不一样。但是大概的原理在一定程度上是相似的。

至可以说是垃圾信息,页面分析的爬虫技术就是基于此产生的,用来获取更有价值的信息。

2 网页爬虫系统的分析

2.1 系统功能需求

网页爬虫系统的设计与实现需要考虑好系统的功能健全还要考虑好系统的的扩展和系统的性能,为了方便以后对系统进行重构,系统设计需要按照以下的规则:

(1)系统为多线程机制

网络爬虫支持多线程同时进行操作,爬虫在局域网内并行运行,从而使系统的整体运行的效率得到提高,并且在最短的时间获取所需的信心。

(2)系统的功能完善

2.2 系统功能设计

网页爬虫要实现更加人性化,就要从指定的URL地址抓取到特定的页面内容,接着解析出页面中的链接地址,然后再去访问这些URL,重复进行,直到得到的结果满意,爬虫存在的目的就在于此,根据这个宗旨。

根据需求,需要实现以下几个基本功能模块:

(1)网页爬取模块:主要实现的是通过从URL管理传获取 URL,进行地址析,通过 HTTP 协议访问URL指定的页面,同时接收服务器端传送的页面信息。

(2)搜索策略模块:主要实现的是管理爬取网页所选取的搜索策略,宽度优先搜索算法是本系统采用的算法,对搜索算法进行改进并提高搜索效率。

(3)解析页面模块:主要是实现提取的页面内容,提取的内容有Css 脚本,图片,视频,文本,链接,Js,等其他文件。

3 系统主要功能模块设计

3.1 网页爬取模块设计

(1)网页爬取过程

系统开始就需要实现网页的爬取,通过所要抓取的内容以及给定指定的URL网址,这个模块也是系统的核心,网络中相关的网页需要被爬虫去收集。网页信息要爬取再保存到本地。本系统设计的爬虫是通过多线程分配并行进行调度的,URL地址先从URL队列中获得,再从Web服务器发送数据请求接收Web服务器返回的数据;返回存储到本地的网页数据进行格式化。

对于以上的流程,为了避免耗费不必要的时间以及无限制等待响应缓慢的服务器或规模庞大的网页,我们必须必须需要注意的是HTTP向Web服务器发送请求后,等待机制需要被设定超时。响应包的头部会被客户端解析出来,获得重定向信息和状态编码。循环的重定向一个循环的链是否存在可以通过维护一个URL哈希表来检测的,如阻止进一步循环的相同的URL在链中出现的话则。必要的错误检测和异常处理在页面获取过程中是非常重要的,因为程序代码必须能处理服务器的各种响应。

(2)HTTP协议

对于HTTP协议需要了解,Java中有个HTTPClient组件与url进行连接。

3.2 搜索策略模块设计

启动了爬去网页的程序后,在Internet中开始搜索网页,采用宽度优先算法。这种搜索算法就是数据结构中的宽度优先算法,思路是这样的:最先获取指定的URL的网页,然后提取该网页中的所有URL,在一个个的去获取URL地址,如何没有的话,就结束这个遍历,同一个层次的网页上的URL链接遍历完了后,就继续下一层。就这样一层层的进行处理,不过这样有可能导致一个无穷的遍历,如果是一个环状图的话就可能变成一个死循环了。不过它的好处就是能计算出网络中两个节点的最短路径,所以它经常被作为实现爬虫的最佳策略,又因为这个算法十分的容易实现,所以我们采用该算法来实现。

3.3 页面分析模块设计

通过爬虫搜索指定URL的内容进行分析,搜索下来的网页,进行URL处理,网页正文,Xml,Javascipt脚本,Css文件提取,通过指定相应的规则来进行分析。

抓取网页的源码,然后去判断网页的编码,否则很大程度上会获取到乱码。首先看看的Http头的Charset,一般来书,这个会比较准,然后再看Http的头里的Charset和网页的Meta里声明的Charset是否一致,所以人工加了一次判断,若不同的话就到内存流里使用网页的编码去重新读取一次源代码。

3.4 网页管理模块设计

(1)网页保存

网页信息的保存,通过缓存空间保存网页信息的系统,可以为各个页面设置独立的文件用来保存网页的基本信息,各个文件的名字可以按照页面中的URL层次来进行划分,本地缓存文件目录的建立,保存到本地数据库将抓取到的网页,与此同时还需要抓取页面的网页标题、URL地址、网页爬取的时间、网页大小、网页类型、保存位置等信息,保存到数据库中。

(2)页面本地化

通过中间的过滤服务器就得到了比较分析满足我们要的 Web 页面,但是在一定程度上我们的要求还是没有达到,我们需要去做的是对 Web 页面的内容进行分析和提取,大致需要被提取的内容有:

a 页面文本内容

b 页面的网页链接地址

c 获取网页中的 css,javascript 脚本

d 获取网页中的图片文件

e 获取网页中的多媒体文件

最开始我们通过爬虫获取得到的网页html文件,然后将图片,多媒体,css,js都抓取下来,接着对应现在的内容链接进行本地化处理,最后再本地页面中的链接中进行修改了,修改后获取的内容通过滤服务器来进行过滤。最后呈现在我们眼前的就是一个和原来一样的本地化网页了。

参考文献

篇(7)

中图分类号:TP393 文献标识码:A 文章编号:1007-3973(2013)007-063-03

1 引言

随着新媒体的飞速发展与逐渐成熟,新媒体这一媒体形式凭借其便利、便捷的特点获得了人们的认可和关注。由于新媒体平台的数量增长,人们已经逐渐迷失在浩瀚的网络中,无法在有限的时间内及时、准确地获得想要的信息,所以对新媒体进行有效的资源整合成了解决这一问题的首要途径。本文以四川大学教务处网站、四川大学团委网站、四川大学学生工作处网站为研究背景,结合计算科学技术,提出了新媒体资源整合的方法,使广大的学生群体在有限的课余时间内准确、高效地了解校内外的资讯。

本文主要工作包括:(1)研究四川大学网络媒体现状;(2)提出新媒体平台数量增长背景下,如何及时、高效地获取资讯的办法;(3)介绍新媒体资源整合的核心技术 ― 网络爬虫技术及相关关键技术;(4)结合网络爬虫技术设计资源整合网站,整合四川大学教务网站、学生工作处网站、团委网站的资讯。

2 四川大学网络媒体现状分析

经调查,四川大学学生最经常访问的校园官方网络平台有“四川大学教务处网站”、“四川大学团委网站”、“四川大学学生工作处网站”,其主要原因在于以上几个网络媒体平台经常颁布贴近学生校园生活的资讯信息,学生急需从中获取及时的资讯了解校园内的实时动态。现阶段,四川大学官方网络媒体具有以下几个特点:

2.1 资讯重复出现,缺乏系统性

新媒体飞速发展,其主要原因在于其便捷和便利的特点。经过调查发现,四川大学教务处网站、团委网站、学生工作处网站上经常出现资讯重复的现象,一则通知或新闻因其工作性质与网站直属单位相同而被同时在多个网络平台上。网页的主页设计中,一般会将5-8条的资讯显示在主页面上,其余的资讯需点击“更多”进行查看。学生在浏览网站了解资讯时,主要关注的就是页面中通知栏、新闻栏的即时信息,很少点击“更多”查看未全部显示的信息,如此重复信息的出现,极可能导致信息的更新而使学生错过还未阅读的资讯信息。

2.2 资讯分布广,使用效率低

资讯分布广是现阶段四川大学网络平台的一个主要特点,同时也是一个亟待解决的问题。广泛的信息分布使学生在浏览信息时疲于奔命,再加之校园网刷新速度较慢,很大程度上降低了学生的使用效率。效率降低了,也违背了新媒体这一新兴产业的初衷,高效率的获取资讯是广大学生的需求。

3 及时、高效地获取资讯的对策研究

3.1 及时性

所谓及时性,需要使学生在浏览网页时能第一时间了解到同步更新的资讯。

3.2 高效性

所谓高效性,需要使学生在有限的时间内尽可能多得获得有效的资讯。

结合以上两点,资源整合概念是解决这一问题的最佳对策。

资源整合是系统论的思维方式,针对本文提出的问题,就是要通过科学化的方法将四川大学教务处网站、团委网站、学生工作处网站彼此相关但又分离的资讯,通过计算机科学技术的方法整合到一起。

具体方法是设计一个四川大学资讯整合网站,将三个网站的通知、新闻获取到一个网站上,使学生在登陆浏览一个网站时就可以关注到三个网站的实时信息。同时,网站将使用自动更新技术实现及时性,使用去除重复的方法实现高效性。

4 实现资源整合的核心技术

网络爬虫是在搜索引擎领域中广泛使用的技术,而其主要是根据用户的需求,在制定的网络范围内搜寻消息。这项技术可以运用在实现本文提出的资源整合理念上。本节将概述网络爬虫技术并介绍实现网络爬虫相关技术。

4.1 网络爬虫技术概述

网络爬虫是通过网页的链接地址寻找网页的程序,如图1所示,它从网站的某一个页面开始读取网页的内容,找到网页的其他链接地址,然后不断地递归循环,直到把网站内所需资源遍历完整为止。

在抓取网页的时候,网络爬虫一般有两种策略:(1)广度优先策略;(2)深度优先策略。

4.2 Java语言

Java语言具有简单性、多线程性、与平台无关性的特点。

网络爬虫需要对多个页面进行解析,显然,单线程的工作效率极低,程序会因此出现瓶颈。单线程技术需要一个接一个地等待响应,等待时间将是每个网页请求等待响应的时间。因此,多线程是实现网络爬虫的必要技术。

4.3 Jsoup Html解析工具

Jsoup是一种Java的Html解析器,可以直接解析某个URL地址、HTML文本内容。Jsoup提供了较为方便的API,可以通过类似于JQuery的操作方法进行数据操作。

主要功能有:从URL中直接获取页面HTML,使用DOM、CSS选择器查找、获取数据,实现对HTML的简单操作。

4.4 JDBC数据库访问

篇(8)

中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)15-0062-03

1 引言

随着云时代的来临,大数据的发展也越来越成为一种潮流。大数据通常用来指公司创造的大量结构化和非机构化化数据,这些数据被获取并存放到关系型数据库,在分析数据时往往会花费大量的时间和精力。“大数据”在互联网领域是指:互联网公司在正常运行过程中会生成、累积用户行为的网络数据。这些数据的规模是非常庞大,甚至大到不能用G或T的计量单位来衡量。在大数据时代,爬虫技术成为获取网络数据的重要方式。

互联网金融发展过程中需要搜集大量的数据资源,这个过程非常关键,并且实施起来较为困难。金融数据的搜集,是通过计算机技术与金融领域相关知识的综合,将金融经济的发展与相关数据进行集中处理,能够为金融领域的各个方面如经济发展趋势、经融投资、风险分析等提供“数据平台”,真实的数据资源还可以推进金融经济的快速发展和金融理论的创新。当今互联网的快速发展,网络上也充满各种金融信息,并且更新速度快,这使互联网成为金融领域获取数据资源重要一大方式。例如Butler,Leone,Willenborg和 Frank等公司都是利用互联网采集技术来抓取所需的数据资源。

2 互联网金融数据抓取的特点

2.1 互联网上金融方面的数据一般具有的特点

1)数据量大、种类繁多。对于一些规模较小且只需抓取一次的数据,一般复制粘贴或者手工记录即可,没有什么技术上的要求。但是,金融经济市场领域的数据一般规模巨大,例如需要获取某个结构一年的交易记录,数据量就是非常大的,而且数据资源往往来源于不同的机构或者不同的部门,想要准确地获取数据资源不是很容易。

2)可靠性、实时性。在研究金融理论或者做金融分析时,对数据的可靠性、实时性要求非常高。金融经济的发展模式瞬息万变,更新速度很快,为了及时的反映市场上经济发展状况,要求数据的来源具有实时性和可靠性。

3)金融经济领域的数据类型一般以文本和数值型为主,图片和视屏等多媒体类型的数据较少。

4)数据一般会从较官方的网站抓取。为了保证数据来源的可靠性和准确性,数据一般从较权威的机构获取,例如金融交易所、国家有关权威决策与信息部门和国内外各大互联网信息提供商。

5)抓取数据的目标网页主要有两种类型。第一类是URL固定但是信息实时更新的网页要定期访问并获取数据,例如一些网站的股票行情类数据;第二类是规模较大且近似网页中具有固定特征的数据。例如某些国家权威机关按时以某一固定格式各种数据报告。

我们可根据金融经济数据的这些特点,制定相应的方法与策略抓取数据资源。对于地址相对固定的网页,所面临的数据采集问题比较集中,不需要考虑各种技术因素的变化对采集的影响,我们可以更有针对性的收集数据,制定更高效、更合理的抓取策略。

2.2 获取网页信息

目前主流的网站开发技术主要有php、net和java的Alexa等,虽然说开发的网页格式五花八门,但它们传输数据的原理都一样,都是通过超文本传输协议(HTTP协议)将数据资源传送到客户的。微软公司提供的可扩展标记语言(XML)服务集合中的组件 MSXML(执行或开发xml所设计的程序)里面有个 XMLHTTP浏览器对象。该对象的原理基于HTTP 协议的,里面封装着很多方法和属性,这些方法和属性与网站信息双向交流有关。客户端调用 XMLHTTP对象搜集网页信息的过程主要包括以下几个步骤:

①首先建立XMLHTTP对象;

②利用XMLHTTP对象里面的Open方法与服务端建立连接,制定网页的地址(URL)和命令的发送方式;

③通过XMLHTTP中的Send 方法发送信息;

④等待服务端处理并返回结果。

数据的抓取在金融领域的研究中是一个关键环节。互联网中的数据具有规模庞大、实时性、准确性等特点,为金融经济的发展提供了重要的数据来源。通过爬虫技术抓取数据资源,可以高效的在互联网海量的数据中提取所需的数据资源。灵活而方便地定制抓取数据地方案,使抓取到的数据成为金融经济发展的可靠保证。

3 爬虫技术的实现

爬虫技术的设计是搜索引擎实现的关键技术,爬虫算法的好坏直接关系到搜索引擎性能的优良。经过多方面研究表明,“最好优先算法”应用于多重搜索中效果较好,但是这个算法本身也存在缺陷,例如收敛速度过快致使搜索的数据不全面,“查全率”太低。基于这个问题,本文研究如何改进这种算法,并实现网络爬虫。

3.1 网络爬虫的算法分析

爬虫在整个网络系统中自由搜索,能够自动识别URL,自动下载网页,并提取数据信息,存放到数据库中。整个过程都不需要人工的参与。当前主流的爬虫算法主要有广度优先算法、深度优先算法和最好优先算法等。传统的图算法主要应用在第一代web爬虫索引整个网络,该算法是以一个网页链接集作为核心,去递归的链接其他的网络页面,不关心网络中的数据内容,只追求在网络上最大的覆盖率,网页的个数越多越好。算法如图1所示。

3.1.1 深度优先搜索算法

深度优先搜索算法(DFS)在研究爬虫技术早期使用较多,它的搜索目标是要到达结构的最外结点,即搜索到不包含超链接的HTML文件。在一个网页中,当一个链接被选择后,链接的HTML文件执行DFS算法,完整的沿着一条链接搜索,走到边缘节点为止(即不包含任何链接的HTML文件),然后返回上一个页面链接的但是未搜索过的页面,再沿着这个搜索到的页面执行DFS算法即可。直到所有连接到的页面被搜索完成,算法结束。DFS算法的优点是能根据一个HTML文件查找到其所链接的所有HTML文件,能查出这个网页在互联网中的链接结构。但是DFS算法也有很大的缺点,因为整个网络的结构是非常深的,各个网页之间的链接关系也很复杂,很有可能陷入其中就无法返回。对于图4-1中的结构,使用深度优先遍历算法的返回结果是:A-F-G;E-H-I;B;C;D。

3.1.2 宽度优先搜索算法

广度优先(BFS),也叫宽度优先,在这里的定义就是层层爬行,沿着结构的宽度方向层层搜索。给定一个网页的URL时,首先搜索这个URL所链接的所有网页,遍历完这网页链接的所有网页之后,再遍历子网页所链接的所有网页,直至遍历完所有的网页为止,一般采用BFS策略来覆盖范围更广的网页。广度搜索相对于深度搜索,对数据抓取更容易控制些。对服务器的负载相应也明显减轻了许多,爬虫的分布式处理使得速度明显提高。而且BFS算法能够找到两个网页之间的最短路径,并且不会像DFS那样使程序陷入深层查找无法返回。缺点查找深层网页时效率较低。对于图4-1中的机构,BFS算法的访问顺序为A-B;C;D;F-G;E-H-I。

3.1.3 最好优先搜索算法

最好优先搜索(Best-First)是宽度优先搜索的扩展,基本算法思想是将各个节点表按照据目标的距离排序,再以节点的估计距离为标准选择待扩展的节点。

搜索过程为:

1)先建立一个搜索图G,里面包含初始节点集合S,open=(S), closed=()表示空表;

2)若集合open为空,则查找失败,并退出程序;

3)n = first(open); remove(n, open); add(n, closed);

4)若 n为目标结点,则查找成功 ,并可给出S到n的路径;

5)否则,扩展结点n, 生成不是n的祖先的后继结点集M={m} 把每个m作为n的后继结点加入G;

6)If m没有在open和closed集合中出现过Then add(m, open);

7)If m在open集合中有重复结点k,且g(m)

8) If m在closed集合中有重复结点k,且g(m)

①将closed集合中的结点k改为结点m(只需修改主链指针和f、g);

②按后继元素,修改k在open集合和closed集合中的后继元素f,g的值;

9) 按f值,按从小到大的顺序对open表中的结点排序,并重新返回到2步。

这些算法虽然都有各自的优点,但是它们的综合性能都不是很优。本文对这些算法进行了测试,结果表明最好最优搜索算法在爬虫技术应用上性能最佳。所以重点对Best-First算法进行研究并发现,虽然算法查找网页的准确率很高,但是由于算法存在收敛速度过快的缺点,使得不能在较大规模的网络上全面查找数据,即“查全率”太低。如何设计程序,提高最好最优算法的“查全率”才是网络爬虫技术实现的关键问题。

3.2 算法改进

对图2中的网络模型进行最佳优先算法的搜索,假设A1,A3,B1,B2,B3,B4,B5是相关的URL,A2是干扰页面,网络爬虫从A1开始查找。算法思想是:爬虫程序经过一定的计算,如果发现A2是不是查找目标,但是发现A1是要查找的网络页面,程序就会把A2的链接直接忽略掉,沿着A1的链接继续搜索。这样就会导致A3、B2、B3、B4、B5这些相关的页面被爬虫程序给忽略掉,从而大大降低了搜索效果,不能时爬虫全面搜索整个网络页面。

其中:A1、A3、B1、B2、B3、B4、B5是相关页面;

A2是干扰页面;

C0、C1、C2、C3、C4、C5、C6是访问路径。

本文提出的改进算法思想是,当查找到A2页面时,虽然这个页面与主题无关,但程序并不忽略这个链接,而是暂时保存起来,然后爬虫程序计算A2所链接的页面中是否存在需要用户需要查找的页面。算法设定一个参数f记录crawler在遇到干扰页面的链接时搜索的深度。只有当爬虫程序在搜索到f深度仍然没有发现所需要的页面,这时才会A2页面忽略掉。例如在上图中,如果爬虫经过c2、c3、c4、c5、c6这几条路径能够找到相关页面,就说明A2这个网页包含很多所需要的网页链接。根据这个思想,对最好优先搜索算了进行改进,以提高爬虫程序的“查全率”。改进算法利用了JAVA中的多线程机制,核心算法如下:

BF-BF(topic,starting-urls){

link_1=fetch link(starting_url);

While(visited

doc=fetch(link_1);

if(score_r1>r1)

{ enqueue_1(frontier,extract_links(doc),score_r1); }

else

{score_r2=link_score_r2(D,links);

if(score_r2>r2)

enqueue_1(frontier,extract_links(doc),score_r2);

else

enqueue_2(links); }}}

4 结束语

本文阐述了爬虫技术在互联网中的应用,并以爬虫搜索方法为研究目标,通过Java多线程对其中的最好最全算法进行算法实现。随着硬件技术、信息技术和物联网技术的不断发展,未来必将会出现大规模基于网页信息攫取的算法设计,各种新型的网络应用协议也会不断问世,这些技术成果都将极大地促进各类异构网络的融合过程,进一步提高计算机通信网络的数据分析功能。

参考文献:

[1] Otis Gospodnetic,Erik Hatcher.Lucene IN ACTION[M]. Manning Publication Co,2006.

[2] 袁津生,李群. 搜索引擎基础教程[M]. 清华大学出版社,2010.

篇(9)

一、引言

互联网的使用已经渗入到社会的各个层面,特别是教育领域,为高等院校的本科教学提供了庞大的信息资源,但要从这么大的资源库中寻找到自己需要的内容却是非常难。高校师生经常会使用像google、baidu等搜索引擎来帮助寻找自己要的资源。但其超大规模的分布式数据源、异构的数据及信息的检索质量不高等问题造成用户很难找到真实要用的信息,使其无法直接为高校师生提供资源服务。为了解决这一问题,本文探究了一种基于聚焦搜索引擎的课程资源库建设方案,为高校师生提供课程信息资源的检索服务。

二、聚焦搜索引擎实现策略

聚焦搜索引擎是实现基于主题的信息采集功能的核心组成部分,一般由爬行队列、网络连接器、主题模型、内容相关度分析以及链接相关度分析等功能模块组成。

其中,爬行队列是由一系列主题相关度较高的URL组成。爬行队列在聚焦搜索引擎进行主题搜索之初是由种子站点组成,这些种子站点可以由该行业领域的专家给出,也可以借助一些权威网站自动生成。在搜索过程开始之后,系统发现新的URL,并根据主题相关度对其排序后补充到爬行队列中。网络连接器则根据爬行队列中的URL,与网络建立连接后以下载其所指页面内容。

主题模型由主题建模方法来实现。主题词法是常用的主题建模方法;关键词法以一组特征关键词来表示主题内容,包括用户需求主题,以及文档内容主图。一个关键词可以是单个的词、短语、包括权重语种等属性。

内容相关度分析是指系统对经过内容特征提取后的网页数据进行分析,判定网页内容与指定主题相关度如何,过滤无关页面,保留相关度达到阈值的网页。

链接相关度分析是指系统对从网页中提取的超链信息进行测算,得出每个URL所指页面与指定主题的相关度,将符合主题度要求的URL加入到爬行队列中并对其进行爬行优先度排序,以保证相关度高的页面优先被检索到。

检索器为用户提供查询界面,根据用户提出的检索式对索引数据库进行检索,按相关度高低对查询结果排序后将页面链接及相关信息返回给用户。

管理平台负责对整个系统进行监控和管理。主要实现确定主题、初始化爬行器、控制爬行过程、协调优化模块间功能实现、用户交互等功能。作为一个完善的搜索引擎,管理平台还应供跨平台应用网络服务应用接口。

三、基于聚焦搜索引擎的课程资料库建设所需技术

1、数据库技术:数据管理是现代计算机的一项重要应用,对数据进行分类、组织、编码、存储、检索和维护的利用。数据库技术为应用程序提供了更为标准和开放式的接口。

2、面向对象技术:面向对象技术对于复杂知识单元的结构表示,课程资源库的构件化集成、信息处理模块的整和等都是至关重要的。本建设课题以J2EE开发平台为基础。

3、网络技术:计算机网络将地理位置不同并具有独立功能的多台计算机系统通过通信设备和线路连接起来,以功能完善的网络软件实现网络资源共享的系统。

4、人工智能技术:人工智能从学习者的结构特征、知识的表示等方面来进一步培养学习都能从庞大的知识库从寻找到有价值的,值得学习的资料。

四、基于聚焦搜索引擎的课程资料库的开发步骤

本系统首先对web中存在的相关指定课程资源的页面进行搜索,然后对搜索到的网页进行预处理与结构分析,再从网页中提取多媒体资源的相关文本,相关文本进行拼音及英文翻译转换、中文分词、关键词过滤提取等操作,最终形成对指定课程相关资源进行描述的信息库。

1、搜集指定课程资源网页。利用网络资源搜索器baidu或google等搜索与多媒体相关的web页面,利用页面的HTML标签等属性计算机内容相似度。这个过程中包括将html代码保存在一起,组建一个资源库,利用搜索策略决定搜索器的爬行主题和爬行方向,提高搜索引擎的准确率。

2、分析资源网页和定位多媒体区域。获取charset的属性值,判断网页的编码语言和编码类型。接着定位多媒体区域,利用网页结构图判断资源的表格区域,将与资源描述相关的文本定位,尤其是那些导航文本对于资源的搜索非常重要。通过一定的算法将干扰的文本区域或干扰文本剔除,保留有利用价值的文本。

3、提取指定课程资源相关文本信息。

4、入库所抓取的关键信息。提取的相关文本信息,只是做了一个关键字的选择,还要将这些关键字入库到数据库,这部分工作就是信息入库工作。

5、利用管理平台负责对整个系统进行监控和管理。主要实现指定所要抓取的课程资源类型、关键词、初始化爬行器、控制爬行过程、实现最终所抓取资源检索、提取、展示等功能。

6、使用的开发工具:J2EE开发平台(JDK1.6、Myeclipse7.0、Tomcat服务器)。开发方式:基于BOTjar包和1ucene_cnjar包的二次开发,充分利用JAVA网络爬虫的开源代码,来建立课程资源库资料搜索和爬取的聚焦爬虫。

五、结束语

在互联网中进行课程相关资源的搜索与聚焦爬虫技术的结合具有重要意义。将本文提出的方法与课程资源所需内容分析相结合,全面准确的提取网络中课程所需的有关信息,可提高资源的查准率和查全率,能够更有效的促进网络资源更好的利用,从而可以建设本科各门专业课程的课程资源库,并为高校师生提供良好的信息资源服务。

参考文献:

篇(10)

(1)对所有不含有要抓取的结构化信息页面的 URL、又不含有可以集中提取前者 URL 的种子型 URL,都不作处理。

(2)从可以集中提取含结构化信息页面 URL 的种子型 URL(如地方新闻目录 URL),提取全部的含结构化信息页面的 URL(如地方信息列表 URL)。

(3)从含结构化信息页面的 URL 提取所需的结构化信息,并加以记录。

3.2.2 扩展 Frontierscheduler模块

FrontierScheduler 是一个 PostProcessor,其作用是将 Extractor所分析得出的链接加入到 Frontier 中,以待继续处理,聚焦爬虫实现关键词对主题的判断算法就在该模块中构建并执行。主题相关度判断的关键代码如下:

public void GetCount(String path,CandidateURI caUri)

{//判断待抓取网页与主题是否相关

try {

String s=sb.getStrings();//s 取网页正文字符

Len=length(s);//求网页字符数

float d=0;//初始化 d,用于计算所有导向词的权重和

for(int i=0;i

{count=0,int j=1;//count为导向词出现次数,j 为导向词在字符串的位置

t= length(a[i]);//求第 i 个导向词的字符个数

While(j

int index=s.indexOf(a[i],j,len);//查找字串在 j+1 到 end 之间第一个字符首次出现的位置

if(index!=-1)//找到后,继续在余下的字符串中找

{count++;

j=index+t+1;}

Else

Break;

}

D(i)=count*b(i);//D(i)是第 i 个导向词的权重,b(i)表示 i 个导向词的权值。

d=d+ D(i);//将所有导向词的权重求和

}

k=1/len * 1/100 * d;//k 是网页主题相关度,len是文章字符数,100个导向词

if(k>0.6) ; //相关度判断

{System.out.println("count:"+count);//表示输出

getController().getFrontier().schedule(caUri); //当前 url 加入 heritix 采集队列 }

}

3.3 Heritrix聚焦爬虫接口的设计

Heritrix 网络爬虫是一个通用的网页采集工具,需要对Heritrix 抓取和分析网页的行为进行一定的控制,修改Extractor和 Frontierscheduler模块后,需要对其各个功能接口进行操作调试,由此保证聚焦爬虫功能的全面实现。下面即对重要功能接口进行必要介绍。

(1)应用接口

在设计聚焦爬虫时,应定制一个应用接口模块以供用户使用,具体将负责与Heritrix 软件关联,以提供启、停爬虫、获取网址、采集关键词等功能实现。

(2)数据库查询和修改接口

在设计聚焦爬虫时,应设计相应的数据库接口,负责下载并发现与主题相关的网页信息、再保存到数据库的表中。存储的字段包括:网页URL,本地存储相对路径,下载时间,HTTP头中抽取的网页编码,关键词id等。

(3)去重接口

因为Heritrix对相同的URL不进行替换,爬虫工作时会下载大量重复的网页,为了节省空间、并获取准确的采集结果,就必须按照设定规则对重复下载的网页进行删除。

4 结束语

通过以上对开源Heritrix软件的改进,聚焦爬虫已能根据预设的关键词进行网站抓取,并按照算法判断,当网页的主题相关度阈值大于0.6时,即聚焦爬虫下载网页,至此爬虫实现了指定网站的主题搜索。综上可见,可以改进开源网络爬虫并使其在垂直搜索引擎中获得成功立项使用。

参考文献:

[1]刘运强. 垂直搜索引擎的研究与设计[J]. 计算机应用与软件,2010, 127(7): 130-132.

[2]刘伟光. 一种基于改进向量空间模型的藏文主题网页采集方法[J]. 图书馆学研究,2014, 16:55-62.

[3]陈欢. 面向垂直搜索引擎的聚焦网络爬虫关键技术研究与实现[D]. 华中师范大学, 2014.

上一篇: 非遗传承的曲艺传承 下一篇: 新课标下阅读教学
相关精选
相关期刊