计算机爬虫技术汇总十篇

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

计算机爬虫技术

计算机爬虫技术篇(1)

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

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

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

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文件夹中可以实现八类不同病虫害图像的文件:稻曲病图像、稻瘟病图像、恶苗病图像、胡麻叶斑病图像、霜霉病图像、纹枯病图像、小球菌核病图像、叶鞘腐败病图像。

【参考文献】

计算机爬虫技术篇(2)

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

Abstract: In the information age, the Internet is full of all aspects of our lives, and the application of the search engine for our life brought great convenience .The research on the realization of web crawler in search engine is of great significance to improve the efficiency of search engine. This paper analyzes the realization of the web crawler in the subject oriented search engine, and puts forward the corresponding methods and measures.

Key words: Search Engine; Web Crawler; Implementation; Design; Theme

1 概述

使用搜索引擎,人们可以方便快捷地在网上获取有用信息。随着大数据时代的到来,传统的通用搜索引擎面临着索引规模、更新速度和个性化需求等多方面的挑战。主题搜索引擎以提供分类精细、数据全面、更新实时的搜索服务为目标。网络爬虫是搜索引擎的基础模块,是搜索引擎的重要基础。

网络爬虫是一种能自动提取网页内容的程序,利用网页信息格式进行网页分析,也可以定期搜集某个或某些网站的内容,跟踪网站的发展历程。随着网络爬虫技术的快速进步,网络爬虫更加广泛地运用于网站结构分析、个性化信息获取以及用户兴趣挖掘等多种服务中。

2 主题搜索引擎简述

搜索引擎是一种用来在万维网上检索资源文件的计算机程序。搜索引擎根据用户输入的检索关键词推测出用户的查询意图,然后快速地返回相关的查询结果信息供用户使用。

大数据时代互联网数据爆炸性地增长,急切地需要一种快速、准确细致、全面深入且更新及时的信息检索方法。主题搜索引擎克服了传统搜索引擎的诸多困难,使信息检索变得更加精确细致,使搜索到的信息更加全面深入,同时使专题信息和学科信息的更新更加及时。

3 网络爬虫简述

网络爬虫从一个初始URL队列开始,从中获取一个URL,获取网页,从网页中提取所有的URL,并将新的URL添加到URL队列中。然后网络爬虫从队列中获得另一个URL,重复前面的过程,直到达到停止条件。这种爬取资源的方式存在着网络连接不稳定、网页特征多样化、URL不规范等一些问题。

4 网络爬虫分类

第一个网络爬虫是美国麻省理工学院的学生Matthew Grey于1993年写成,后来改进了爬虫程序并将其引入到搜索引擎中。随着搜索引擎技术的不断进步,爬虫程序也越来越复杂,后来产生了通用爬虫、限定爬虫和主题爬虫等几种不同类型的爬虫。

4.1通用爬虫

基本原理上文已分析,但爬取的范围过大,爬取顺序要求低,对爬取速度和存储空间要求较高。

4.2限定爬虫

限定爬虫是一种能爬取用户感兴趣的某一类网页的爬虫程序。但它不要求爬取所有的网页,只需爬取某些特定种类的网页即可。工作过程是:采用朴素贝叶斯方法用网页样本训练一个文本分类器,然后用这个文本分类器指导爬虫的偏好,从爬虫队列中选择出用户感兴趣的网页。

4.3 主题爬虫

主题爬虫先确定一个或多个主题,根据一定的分析算法过滤与主题无关的URL,保留与主题相关的URL并将其放入等待URLs队列中;然后使用某种搜索策略从等待队列中选择下一个要抓取的URL,并重复上述过程,直到达到某种停止条件。

首先主题爬虫需要判定当前抓取与设定的主题的相关性,其次主题爬虫采用按相似度大小抓取网页的策略来抓取网页。相比通用爬虫它极大地节约了硬件和网络资源,加快了爬取速度,还可以满足人们对特定领域的需求。

5 主题爬虫的爬取策略

主题爬虫以通用网络爬虫为基础,在此基础上进行优化和扩展,使其具备主题网络爬虫特有的功能,进而实现面向主题的网页信息提取。

主题爬虫尽可能搜集与主题相关的网页,减少下载无关网页的可能。主题爬虫与通用爬虫相比需要解决以下问题:主题的描述和定义、网页内容与主题相关性的判定、链接重要程度的判定、如何提高主题爬虫资源覆盖率。

面向主题的信息采集系统可分为4个部分,即主题集选取、Web信息提取、页面预处理、链接过滤。

5.1 主题集选取

主题网络爬虫中,为有效进行剪枝和过滤操作,需要对主题进行定义或描述,以此来确定采集的方向,主题集的好坏直接影响到了最终的采集效果。主题可以是几个关键词,还可以是自然语言。用户可以自己定制主题,对主题做进一步的描述。主题集的合理选择是主题爬虫的基础。

5.2 Web 信息提取

从采集起点开始,主题爬虫开爬取Web上的信息资源,通过各种Web协议自动爬取站点的有效信息。为了高效地获取信息,主题爬虫系统中大多都采用了多线程的方式来提取Web信息。

5.3 页面预处理

把主题爬虫抓取到的Web页面规范化,主要包括:页面语法分析,页面去噪等操作,提取网页中的有效信息,然后判定网页信息的主题相关性,过滤与主题无关的页面,从而提高主题爬虫的主题信息提取的准确性。

HTML网页内容可以从正文、标题、标记信息、链接信息等方面反映。因此,对网页信息的提取只需将这些特征信息提取出来。读取页面时,找到标记,将标记中间的内容中的所有标记去除,就得到了页面正文;标记中的内容就是网页的标题,它显示在标题栏中。

即使提取的URL通过了主题相关性判别,提取到的页面内容与设定的主题也可能有很大差距。所以,在页面提取之后应对页面信息进行与主题相关性判别,淘汰与主题无关页面。

5.4 链接过滤

要提高主题Web信息的提取速率和准确性,系统需对采集到的UI进行URL和主题的关系的判定,叫做链接过滤,或链接预测。

链接过滤常用的算法是EPR算法。在链接关系的基础上加入针对链接的相关主题的权重,再引入链接网页之间的主题相关度权重,使产生的重要页面是针对某一主题的,这形成了EPR算法。

6 结束语

网络爬虫的发展为搜索引擎的成功奠定了坚实的基础,然而随着互联网技术的迅速发展,人们对搜索引擎的需求越来越大,信息检索服务也在向着个性化、精细化的方向发展,人们对网络爬虫的进一步设计优化提出了更高的要求。

主题爬虫核心问题是主题页面群的采集和无关页面的过滤问题。网络爬虫具有重复性,如何将页面动态变化的规律与先前的搜索统计结果相结合,提高爬取效率是一个值得研究的问题。目前网络爬虫采用的搜索策略都较固定,缺乏适应性,如何提升爬虫的自适应性有待进一步研究。

参考文献:

[1] 刘金红,陆余良.主题网络爬虫研究综述[J].计算机应用研究,2007,24(10):26-29,47.

[2] 盛亚如,魏振钢,刘蒙.基于主题网络爬虫的信息数据采集方法的研究与应用[J]. 电子技术与软件工程,2016(7):168-169.

[3] 梁萍.搜索引擎中网络爬虫及结果聚类的研究与实现[D].中国科学技术大学,2011.

计算机爬虫技术篇(3)

[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://.

计算机爬虫技术篇(4)

1 引言

主题爬虫技术更加注重某个专业领域的信息,针对某个主题收集相关专业领域的数据。由此诞生出的主题搜索引擎擅长对某类信息提供检索服务,更加注重信息的深度和精确性,必将成为搜索技术领域的新趋势。所以,主题爬虫技术抓取到的数据的优劣直接决定了主题搜索引擎的的质量的高低。

2 主题爬虫的策略

主题爬虫主要实现对链接的智能取舍和对网页的智能过滤,只爬行它认为与主题相关的网页并且下载存储。

2.1 “待访问队列”初始化

初始网页队列的选取直接影响到爬行到的网页与主题的相关程度。首先指定初始种子URL,当然这个URL在某个专业领域是比较知名的,本文采用关键词集来确定主题,指定几个不同关键词来描述(反应)某个主题,其中每个关键词指定不同的权值,使用特征提取的方法给每个关键词指定不同的权值。针对给定的权威网页,程序提取每个关键词在权威网页中出现的词频来表示关键词的权值,这个赋予关键词的初始权值称之为初始关键词的权值,给出关键词集的定义:

HashtablekeyWords = newHashtable();

通过计算每个关键词在初始的URL指向的网页内容中出现的次数,给每个关键词赋予初始的权值。对初始URL的网页进行链接的提取,我们对所有的提取的URL的权值均赋值为最大值1。将每个链接抽象为自定义的PriorityURL类型后,存放在队列中,为了在队列中能够按照类的某个属性(这里指每个URL的权值)进行自动排序,排序的目的是为了我们从队列中能够优先获取权值大的URL进行爬虫,这样就能够保证爬虫能够最大限度的爬取跟我们主题相关的网页,为了实现这一功能,自定义类PriorityURL的时候,它需要实现接口Comparable,并重写compareTo()方法。这样实现了自定义类型能够按照某个属性进行排序,需要把类的多个实例(URL对象)储存在一个可以实现排序的队列中,下面给出队列的定义:

PriorityBlockingQueuewaitforHandling = new PriorityBlockingQueue();

从初始URL页面中提取出的链接并赋予权值为1后抽象成PriorityURL的实例添加到“待访问队列”waitforHandling中,这样队列中的URL会按照权值从大到小排队,我们每次去访问队头即权值最大的URL,从而保证优先访问与主题相关度大的链接。

2.2 网页与主题相关度计算

在对“待访问队列”完成初始化后,只是预先估计了链接URL与主题相关的程度大小。这个URL是否与我们的主题是否相关,必须使用量化的指标来判断,首先规定一个阈值,当计算出的相关度值大于这个阈值时则认定为符合要求,否则认为它与主题无关。通过这个URL所指向的页面内容来判断是否相关,因此对于这个URL要下载其页面内容,这里对要判断的这个URL我们称之为目标URL,根据初始指定的关键词集,计算所有关键词在目标URL网页中出现的词频(权值)。计算目标网页与主题相关度的大小使用余弦度量法。我们已经统计出关键词在目标网页中的权值,关键词的初始权值已经在权威网页中得到,利用公式1可以求得主题相关度的大小值。

(1)

其中Wαi表示设定的第i个关键词的初始权值,Wβi表示目标网页中第i个关键词的权值。

2.3 “待访问队列”的维护

计算出目标URL与主题相关度大小后,与我们指定的阈值(小于1)进行比较,一般来说,指定的阈值为0.9,指定的阈值越大,爬虫爬取的URL与主题密切度越大,但爬取到的相关网页的数量较少;若指定的阈值较小,则爬虫程序能够爬取到大量的网页,不乏其中有与主题相关度较小的网页。所以这里阈值的指定由用户自行选择。如果计算出的余弦值小于阈值,则认为它与主题无关,直接丢弃,爬虫继续从“待访问队列”中读取权值最大的URL继续爬行。若计算出的余弦值大于阈值,保存这个URL,这个URL就是符合要求的,进而提取其中包含的所有链接,计算链接的权值,构造PriorityURL实例放入“待访问”队列中。提出基于页面内容评估链接的最优最先爬取策略计算URL权值的算法:

(i) 根据余弦度量法公式计算一个页面与主题的相关度,记为γ。

(ii)提取该页面包含的所有链接。

(iii)计算页面中链接的总数量,记为t。

(iv)计算这个URL的级数(层数),即URL中根据“/”分割的层次数目,记为l。

利用公式γ/(t*l) 得到所有链接的权值,生成PriorityURL对象保存在“待访问队列”中。这样就使得爬虫能够循环往复,无限扩展爬取的范围,直到满足用户的需求。

3 结语

本文主要讲述主题网络爬虫程序的功能需求及爬去算法,对最有最先算法进行了改进,提出了基于页面内容评估链接的最优最先爬行策略,实验证明,主题爬虫搜索到的数据与主题保持了很好的相关度,更加有利于对某个专业领域内数据的深度挖掘。

参考文献

[1]王芳.深入解析Web主题爬虫的关键性原理[J].微型电脑应用,2011,(15).

[2]刘汉兴.主题爬虫的搜索策略研究[J].计算机工程与设计,2008,(3).

作者简介

高占江(1989-),男,山东省潍坊市人。硕士学位。现为青岛科技大学助教。研究方向为应用软件研发。

计算机爬虫技术篇(5)

中图分类号:TP393 文献标识码:A文章编号:2095-2163(2013)06-0057-04

0引言

Web2.0是相对Web1.0的新一代互联网应用的统一名称。Web1.0的重要特征是用户通过使用浏览器获取静态的网络信息。Web2.0则侧重于用户与用户之间的交流和沟通,用户不仅作为网页内容的查看者,同时也是网页内容的创造者。所说的网页内容的创造者是指互联网上的所有用户不再只是互联网内容的读者,同时也成为了互联网内容的作者;不再仅是冲浪于互联网海洋之中,同时也是海洋波浪的制造者;在模式上由纯粹的“只读”变为“读写”进而发展成为“共同建设”;由简单被动地接收互联网信息转变为主动创造互联网信息,从而增加了互动,更加符合用户的使用习惯。

近年来,随着Web2.0的兴起,在Web开发中运用AJAX技术的网站越来越多,这些技术的应用带来了更好的用户体验、很多新概念和WebUI设计,同时,由于AJAX技术可以动态改变页面内容,改造了传统Web页面的结构,导致单纯抓取静态Web页面的网络爬虫抓取的内容少于页面呈现的内容,这些动态内容给网络爬虫的设计带来极大挑战,使得爬虫不能获取到网页页面所呈现的全部文本。

本文研究能够支持AJAX的网络爬虫的原理,实现一个支持AJAX且能够进行定制任务的网络爬虫,高效率地对网页信息进行采集。第1节介绍国内外对AJAX页面的抓取研究情况,第2节介绍支持AJAX的爬虫的设计及具体实现,第3节通过实验验证了支持AJAX的爬虫的可行性。

1相关工作

现阶段,主流的搜索引擎,例如:Yahoo!和Google等,都无法对AJAX动态网页建立索引,也就是说不能利用现有的搜索引擎来查询动态网页的内容。而能够支持AJAX的搜索引擎还处于研究阶段,罗兵使用基于协议的动态页面抓取方法,获取AJAX网页内包含的JavaScript代码片段,通过设计脚本语言解释器直接分析脚本代码,仿照浏览器功能顺序执行脚本文件,用来模拟页面的状态转换[1],肖卓磊在之后的研究中也采用了类似的处理方法[2];曾伟辉、李淼利用切片算法构造了程序层次模型,解决了有序执行JavaScript脚本的问题[3];Frey[4]和Matter[5]改进了开源的JavaScript解释器Rhino[6],用来实现状态转换和脚本执行。实现全部功能的脚本解释器较为困难,即便是已开发多年的Rhino项目,依旧有很多的脚本代码不能正常执行,于是,更多的研究人员将研究重点落定于嵌入式浏览器组件,运用组件来模拟AJAX页面的渲染并实现脚本的执行,以达到自动转换状态的目的;在国内,采用类似方法研究的是王映[7]和金晓鸥[8],研究对使用网络爬虫分析脚本语言的技术进行了一些研究,前者使用的是开源的JavaScript引擎SpiderMonkey,而后者利用的是Rhino。因其均解析了包含JavaScript脚本代码的动态页面,从页面中抓取了JavaScript代码,由此获得了网页上的URL,并实现了内容爬取。Frey和Matter扩展了Cobra工具集[9],完成了动态解析和加载HTML代码,然后在内部形成DOM结构树,并通过DOM树获取状态包含的内容。类似于状态转换问题,为了最大限度地利用现有的技术,多数的状态内容获得方式是采用嵌入浏览器组件作为运行AJAX容器,并使用浏览器的外部接口实现和DOM树的数据交互,由此而获得完整的内容[10-13]。

在控制转换方面,较为常用的方式是采用事件过滤机制,对已经过滤后的事件逐一进行触发。为了提高执行效率,Xia[12]和Duda[14]均提出让用户能够自定义过滤规则,也就是加入拒绝规则和接收规则,如此即使得只有在符合规则的集合里才能进行状态转换;Mesbah等采用面向领域的手工配置、HTML元素注解和全自动扫描三种方式来对状态转换进行控制[10];Matter则提出了一种启发式的爬行策略,尽量避免从不同路径进入相同的页面状态[5]。

2AJAXCrawler爬虫设计方案及实现

由于Web 2.0的流行,使用AJAX技术的网站越来越多,本文采用了Rhino引擎对AJAX进行了支持。

2.1 JavaScript引擎Rhino

Rhino采用Java语言实现的JavaScript脚本引擎。Rhino用在Java程序中,为最终用户提供脚本化能力。Rhino包含JavaScript编译器、JavaScript解析器、JavaScript调试等模块。下面即对脚本编译模块和脚本解释模块进行全面分析。

2.1.1脚本编译模块

编译器的输入是JavaScript代码,输出是JavaScript数据对象。JavaScript结构中包含了字节码、注释、string池、数据以及标识符。JavaScript中还包含Objects,函数等。其中,函数也是一段嵌套的JavaScript代码。编译器由以下三部分组成:随机逻辑(randomlogic)的词法扫描器,用来创建AST的递归下降分析器,tree‐walking代码生成器。编译过程是由函数Main.processSource()来完成的,将输入的字符串或者JavaScript代码转化成流文件进行编译。在编译过程中,所有的变量,符号以及命令等都由词法分析器进行解析,再利用内部特定的符号标识,放入对应的数据栈中,最后将得到的数据用树形结构返回,便于Rhino引擎编译。在少分号或者是可赋值表达式等情况下,用语义和词法的反馈(feedback)机制来消除歧义。编译器没有错误校正,因此,只要遇到错误,就立即停止。另外,编译器还在编译完成的script结构中加入sourcenotes信息,以便用户调用toSource()函数进行反编译时使用。

2.1.2脚本解释模块

类似大多数的JavaScript引擎,Rhino的interpreter是一个单线程的大型循环函数,该函数每次解释bytecode的一个指令。在这个大型函数中,采用的是switch语句,即根据所要执行的bytecode的不同,跳转到不同的执行代码段中。大多数情况下,如果一段JavaScript代码调用另一段JavaScript代码,则引擎只会使用JavaScript的栈空间,interpreter也是顺序执行的。但如果JavaScript代码调用了java代码,再由java代码调用JavaScript代码,就会引起interpreter的重入问题。需要一提的是,这个大型函数是可重入的。对于interpreter所需要的各种状态都是通过参数的形式在interpreter函数进入时完成传递的。绝大多数的状态都保存在数据结构Context中。因此,在Rhino里,所有的公共API接口以及大部分的函数接口中,第一位参数均是一个Context的指针。

2.2 AJAX爬虫架构设计

爬虫系统分为两部分,第一部分是预处理阶段,这个阶段实现URL净化,并去除不必要抓取的URL,类似于过滤器的功能。第二部分是网页真正抓取的部分,由于网页下载比较耗时,为了充分利用资源,此处采用了多线程。抓取阶段获得网页,析出网页内部的链接,而后进行预处理。并不是每个网页内部的链接都是需要抓取的,网页内部的链接可能包含以前抓取过的重复URL,Robots协议禁止抓取的URl等。CleanURLs是经过净化后的URL库,里面存放的都是需要抓取的URL。爬虫的架构如图1所示。

2.3AJAX引擎设计

AJAX引擎提供对网页中AJAX的支持,能够对网页中的js代码进行解析、执行,由此得到网页动态内容。AJAX引擎架构如图2所示。

由图2中可见,AJAX引擎主要有三个组成部分。对AJAX页面的解析按照下面的顺序进行。

(1)Crawler通过HTTP请求,获取需要抓取的页面。此时的页面是一个含有AJAX代码的页面,其中没有真正的内容;

(2)DOMBuilder对页面进行分析,建立DOM树,提取出其中的JS代码,触发相应的事件;

(3)将AJAX代码送入JavaScript引擎执行,在执行的过程中,同时根据JS对象与HTML对象映射修改HTML对象;

(4)将执行结果重新组合生成新的页面内容,返回给Crawler。

3实验数据结果

实验基于Java平台,开发环境采用Eclipse,Java虚拟机版本为JDK1.6.0,Rhino版本为1.7R2,实现AJAXCrawler。本文主要对AJAXCrawler进行了吞吐量的测试,并与普通的爬虫进行下载速度的对比。

3.1吞吐量实验

吞吐量实验是测试AJAXCrawler数量以及每个AJAXCrawler启动线程数与下载速度的关系。若启动的AJAXCrawler或者每个AJAXCrawler中的线程数太少,则系统不能完全利用计算机的资源,反之则会因为带宽、数据竞争等而降低效率。测试机器为一台普通PC机,硬件配置以及软件配置如表1所示。

表1服务器配置表

Tab.1 Server configuration listCPU2 * AMD Athlon(tm)ⅡX2 215 Processor 2.70GHz网卡100Mbps内存2.00GB操作系统Windows 7JAVA环境JRE 1.6.0_24

AJAXCrawler测试任务为天涯博客,通过改变AJAXCrawler以及每个AJAXCrawler内线程的数目,测得的数据如表2所示,绘制成折线图,如图3所示(单位:页面数/10分钟)。

由表2和图3可以看出,在当前的计算环境和网络环境下,当选取任务数为3,每个任务内有3个线程的时候,系统运行效率达到较优,平均每10分钟能够下载网页1 679页。

3.2AJAXCrawler与普通爬虫比较实验

此实验以网易的评论为测试对象,分析AJAXCrawler的效率。由于普通爬虫无法抓取到动态内容,此处的量化指标不再以页面数/10分钟作为单位,而是选择Kb/second作为单位。测试结果如表3所示,绘制成折线图如图4所示。

由表3和图4可以看到,AJAXCrawler无论是几个任务并发执行,都相应地比普通的WebCrawler下载速度慢。除去实验环境偶然因素外,最主要的影响因素应该是AJAXCrawler对AJAX脚本的解析和DOM树的更新操作。因为AJAXCrawler在关闭掉动态页面支持时,速度跟普通WebCrawler相差不大。图4中的两条线几行,表明两种爬虫此时的加速比也相差不多。而AJAXCrawler的加速上升趋势已开始走缓,这就说明AJAXCrawler需要更多的资源。另外,若对比下载的页面数,两者相差了十余倍,而下载速度却相对不是很大,进一步说明了动态网页包含的内容丰富。

4结束语

本文设计的能够抓取支持AJAX动态网页的网络爬虫,在抓取动态网页方面,取得了良好的结果。与普通爬虫相比,AJAXCrawler的下载速度稍慢,主要是对AJAX脚本的解析和DOM树的更新会相对浪费时间。不过,下载的页面数与普通爬虫相比,数量却多出了十余倍,抓取的内容会比普通爬虫的内容要丰富很多。

参考文献:

[1]罗兵.支持AJAX的互联网搜索引擎爬虫设计与实现[D].杭州:浙江大学,2007.

[2]肖卓磊.基于AJAX技术的搜索引擎研究[D].武汉:武汉理工大学,2009.

[3]曾伟辉,李淼.基于JavaScript切片的AJAX框架网络爬虫技术研究[J].北京:计算机系统应用,2009,18(7):169-171.

[4]FREYG.Indexing AJAX Web Applications. Zurich:Swiss Federal Institute of Technology Zurich,2007.

[5]MATTERR.AJAXCrawl:Making AJAX Applications Searchable. Zurich:Swiss Federal Institute of Technology Zurich,2008.

[6]MOZILLA.Rhino:JavaScript for Java.[2009-03-22].

[7]http:///rhino/.

[8]王映,于满泉,李盛韬.JavaScript引擎在动态网页采集技术中的应用[J].计算机应用,2004,24(2):33-36.

[9]金晓鸥,钟宝燕,李翔.基于Rhino的JavaScript动态页面解析研究与实现[J].计算机技术与发展,2008,18(2).

[10]COBRA.JavaHTMLRenderer&Parser.[2009-01-19].

[11]http:///cobra.jsp.

计算机爬虫技术篇(6)

中图分类号:TP393.08文献标识码:A文章编号:1007-9599 (2012) 03-0000-02

Web Access and Improvement Study on Detection System of the Web Chat Rooms

Sun Qun1,2,Qi Zhengdong3

(1. Hubei University of Technology,Wuhan430068,China;2.Jiangxi College of Construction,Nanchang330200,China;3.China Nerin Engineering Co.,Ltd.,Nanchang330031,China)

Abstract:Web chat with its low-cost,high-efficiency advantages of online real-time communication capabilities,thus becoming the most widely used Internet network services to network users.Detection of Internet chat rooms as a carrier-depth study of Web access to technical problems and the pretreatment.Of the principles and workflow of the web crawler,Web crawler in the introduction of network parallel multi-threading technology.Discuss the technical features of the WebLech and implementation technology,improvements made WebLech.

Keywords:Web crawler;Network parallel processing;Search strategy;Web structure mining

通过Google、Baidu等通用的搜索引擎或大型的网站资源在互联网上手工检索已不能满足目前部分网络应用的要求。本文以网络聊天室探测系统为研究载体,突出深入讨论网络专门搜索功能的优化。网页获取和预处理模块是其技术核心,如何合理设计或优化一种有效的网页获取程序显得尤其重要。主要针对网络爬虫的工作原理,引入并行多线程处理技术,解决网络爬虫器运行速度和准确性问题,最后提出可行的优化WebLech网络爬虫程序的方案应用于聊天室探测系统。

一、网络爬虫信息抓取分析

(一)网络爬虫的概念

网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。网络爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。

(二)网络爬虫的工作原理和流程

网络爬虫是页面中最关键的部分,它的性能好坏直接影响着页面搜索的性能和处理速度。网络爬虫一般都维护者一个URL队列,利用该数据结构来存储已经发现并待访问和抓取的URL。URL的遍历方式一般有:广度优先、深度优先、随机访问等。网络爬虫的功能结构见图1。

图1 网络爬虫的功能结构图

网络爬虫的各个模块的主要功能介绍如下:

(1)下载模块:该模块是爬虫与Internet的接口,作用是通过web协议对网页的数据进行采集,将采集到的页面递给后续模块处理。

(2)页面解析模块:该模块的主要功能是将下载模块采集下来的页面进行解析,解析成html的统一代码,提取其中具有超链接锚标记的超链接地址,加入到超链接队列中。将获取的代码转化成统一的格式。

(3)链接过滤模块:该模块主要是针对重复链接和循环链接的筛选与过滤。

(4)URL数据库:用来储存经过过滤的URL地址,以标准的数据结构进行存储,为下一个环节的URL队列提供数据。

(5)URL队列:用来存放由URL数据库传递的URL地址,当URL为空时爬虫程序终止。

(6)Web数据库:将所有爬虫抓取的网页中与搜索特征相关的页面进行本地存储。

二、页面采集的并行处理

(一)并行处理概念的引入

计算必须在“合理”的时间内完成就需要高计算速度的领域包括科学和工程问题的数学建模和模拟。用当今计算机在合理的时间内完成求解的那些问题。在存储海量信息的环境必然存在时刻的更新和添加删除等操作,任何用户是无法忍受耗费大量时间与资源最后得到没有价值或错误的输出结果。因此,该聊天室探测系统需要高效的页面抓取模块,以保证网页库的更新,链接的有效性以及输出结果准确性。

(二)并行处理技术在网络爬虫器中的应用

为了提高网络爬虫的运行效率,并行爬行器一般包含多个爬虫,每个爬虫需要完成的任务和单个的爬行器类似,它们从互联网上下载网页,并把网页保存在本地的磁盘,从中抽取URL并沿着这些URL的指向继续爬行。由于并行爬行器需要分割下载任务,可能爬虫会将自己抽取的URL发送给其他爬虫。这些爬虫可能分布在同一个局域网之中,或者分散在不同的地理位置。图2描述了并行爬行器的一般架构。

图2 并行爬行器的一般架构

三、WebLech网络爬虫的改进

WebLech是一款很优秀的多线程网络爬虫程序,但如果直接做为搜索引擎的网络爬虫程序,还存在着不足,针对二个方面,做以下改进:

(一)扩充起始地址

WebLech运行时,从配置文件里获取定义的地址(startLocation)作为起始地址,并且仅能设置一个起始地址。如果Web服务器不设置启动网页时,WebLech可能抓取不到服务器中的任何网页。因此将起始地址和一些系统默认的启动文档组合后作为扩充后的起始地址,以增大搜索的范围。

把启动文件名连接在startLocation设置的IP后形成的新地址作为WebLech运行时的startLocation。遍历ipset地址集中的每个地址,把扩充后的每个ipaddress写入属性类对象props,然后执行随后的原程序至结束即可。

最后修改配置文件config/spider.properties里startLocation属性为ipaddress,代码如下:

props.setProperty("startLocation",ipaddress)

图3为WebLech的配置文件WebLech.config.spider。

图3 WebLech的配置文件

(二)修改链接

WebLech是依靠网页文件中的超链接工作的。超链接可分为图像超链接和文字超链接。图像超链包括背景图像的链接和链入图像,文字超链接包括链入文字、多窗口页面、浮动窗口和表单。为完善链接的处理,在类WebLech.spider.HTMLParser的函数List parseAsHTML(URL sourceURL,String textContent)的第4行之后增加浮动窗口和表单链接。

例如:extractAttributesFromTags("iframe","src",sourceURL,newURLs,newURLSet,textContent);

基于内容的搜索引擎不需要搜索图像,可删除与图像匹配有关的代码。

参考文献:

计算机爬虫技术篇(7)

中图分类号: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.

计算机爬虫技术篇(8)

一、引言

聚焦爬虫(又称为网页蜘蛛、网络机器人)是一种按照一定的规则、自动地抓取万维网信息的程序或者脚本。随着网络的迅速发展,万维网成为大量信息的载体,如何有效地提取并利用这些信息成为一个巨大的挑战。搜索引擎(Search Engine),作为一个辅助人们检索信息的工具成为用户访问万维网的入口和指南。但是,这些通用性搜索引擎也存在着一定的局限性,如:(1) 不同领域、不同背景的用户往往具有不同的检索目的和需求,通用搜索引擎所返回的结果包含大量用户不关心的网页。(2) 通用搜索引擎的目标是尽可能大的网络覆盖率,有限的搜索引擎服务器资源与无限的网络数据资源之间的矛盾将进一步加深。(3) 万维网数据形式的丰富和网络技术的不断发展,图片、数据库、音频、视频多媒体等不同数据大量出现,通用搜索引擎往往对这些信息含量密集且具有一定结构的数据无能为力,不能很好地发现和获取。(4) 通用搜索引擎大多提供基于关键字的检索,难以支持根据语义信息提出的查询。

为了解决上述问题,定向抓取相关网页资源的聚焦爬虫应运而生。聚焦爬虫是一个自动下载网页的程序,它根据既定的抓取目标,有选择的访问万维网上的网页与相关的链接,获取所需要的信息。与通用爬虫(general purpose web crawler)不同,聚焦爬虫并不追求大的覆盖,而将目标定为抓取与某一特定主题内容相关的网页,为面向主题的用户查询准备数据资源。CollegeNews系统是一套包含高校教育类新闻获取、相应数据库建立以及移动端软件应用的系统。在整套系统中,如何获取与主题相关的新闻网页数据是至关重要的一个部分,该部分由聚焦爬虫程序予以实现。

二、 聚焦爬虫简介

网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止。另外,所有被爬虫抓取的网页将会被系统存贮,进行一定的分析、过滤,并建立索引,以便之后的查询和检索;对于聚焦爬虫来说,这一过程所得到的分析结果还可能对以后的抓取过程给出反馈和指导。

相对于通用网络爬虫,聚焦爬虫还需要解决三个主要问题:(1) 对抓取目标的描述或定义;(2) 对网页或数据的分析与过滤;(3) 对URL的搜索策略。

抓取目标的描述和定义是决定网页分析算法与URL搜索策略如何制订的基础。而网页分析算法和候选URL排序算法是决定搜索引擎所提供的服务形式和爬虫网页抓取行为的关键所在。这两个部分的算法又是紧密相关的。

三、聚焦爬虫在获取高校教育新闻中的应用

在CollegeNews系统中,所有的数据来源均为高校教育类新闻,因此聚焦爬虫的功能即为从互联网上获取与高校相关的新闻,并将相关内容存入系统的数据库中。用户在使用高校新闻应用时,客户端向系统的服务器发送相关的请求,系统服务器返回所请求新闻的URL,由客户端对相应的URL进行解析,从而获取相关的新闻资讯。通过使用聚焦爬虫获取高校新闻的原始数据,可以避免传统爬虫爬取网页所带来的获取内容不符合所需主题、获取到的无用处的内容量过大的问题,对于处理能力较弱的系统来说很有益处。

3.1 需要解决的问题

若想让聚焦爬虫完成其功能,首先需要确定合适的种子URL集合,爬虫自种子URL开始按照一定的搜索策略进行网页爬取,在网页爬取的过程中,需要提前确定待爬取页面与所需主题的相关程度与重要性,依据相关度和重要性决定是否爬取该网页。最后,还需要解决数据的更新周期问题,保证数据源的新鲜程度。在解决了上述问题之后,用户即可获取合适的新闻数据。

3.2 确定合适的种子URL集合

在聚焦爬虫的算法设计中,种子URL集合的选取是十分重要的一环。如果选取的种子URL集合不合适,可能会导致程序爬取大量与主题无关的数据,造成系统资源的浪费。

在CollegeNews系统中,为了充分保证系统的运行效率,即尽量避免爬取非高校教育新闻的网页,在构建种子URL集合时,采用使用指定起始网页的方式,选择了各类高校及相关新闻的入口地址作为起始网页,从而确保了初始网页的

在爬虫运行的过程中,另一个重要的问题是如何去除已经获取过的重复页面。该问题又可以分解为两个部分:一是在某次爬虫程序运行的过程中,如何去除本次运行已经获取过的页面;二是在某次爬虫程序运行的过程中,如何去除过往运行后已经获取过的页面。针对第一个问题,本系统在每次爬虫程序运行时,都会将已经爬取过的网页和尚未爬取的网页分别存在两个哈希表中,聚焦爬虫每爬取一个网页,会先比较该网页是否存在于已经爬取网页的哈希表中,若不存在,则进行爬取操作。操作完成后,将该网页从尚未爬取网页的哈希表中删除,同时添加到已经爬取网页的哈希表中。针对第二个问题,本系统在每次运行爬虫程序时会预先设定一个阈值,同时爬虫程序中也会设定一个初始的计数值为0。每当爬虫程序向数据库中添加一条新数据,若数据库返回重复信息,则将计数值加一。若下一个网页不是重复网页,则将计数值清零。直到计数值大于阈值后,认定所有新网页已经获取完毕,结束本次爬取。

3.3 网页搜索策略

一般而言,爬虫程序的网页搜索策略可以分为以下三种:深度优先搜索、广度优先搜索和最佳优先搜索。本系统的搜索策略充分考虑了新闻类网站的结构特点,使用了深度优先与最佳优先相结合的搜索方法。

如前所述,本系统爬虫程序的起始地址为各类高校及相关新闻的入口地址,以此实现局部最优效果。由于绝大部分新闻类网站的结构为目录式结构,即网站由若干页面(目录)组成,每个页面含有若干条新闻的超链接(项)。因此,本系统的爬虫程序首先由起始地址获取到该网站的目录,此后再依次对每个目录进行解析,获取该目录的所有项。按此流程进行网页爬取后,即可获得所需的新闻数据。

3.4 数据库更新频率

计算机爬虫技术篇(9)

中图分类号:TP319 文献标识码:A 文章编号文章编号:16727800(2013)008007002

0 引言

随着数据库技术及数据挖掘技术的迅速发展,人们积累起来的数据越来越多,在这些数据的背后隐藏着巨大的信息及规律。数据挖掘技术是在数据库技术广泛应用、深入发展的基础上应运而生的,它的主要价值就在于通过对大量新旧数据之间关系的分析,挖掘隐藏在这些数据背后的信息,进而促进信息的传递。

Web是一个全球性的信息服务中心,随着单位、个人每天的大量新的Web网页及在线文档,使得Web数据信息以指数形式进行激增。如何从这些浩如烟海的数据中,寻找出有价值的信息,使其为相应的人群、行业服务,已成为目前Web技术和数据挖掘技术的重要发展方向。

初进高原时,由于对低压低氧环境的不适应,人群中不可避免地要出现“急性高原病”。许多研究指出,人群中确实存在着急性高原病易感人群,如果能将数据挖掘技术应用于急性高原病易感人群的预测模型中,对于从根源上控制易感人群的基数将起到极其关键的作用[1]。

1 Web数据挖掘

1.1 Web内容挖掘及方法

Web内容挖掘[2]包括Web文本挖掘和Web多媒体数据挖掘,主要是从Internet上挖掘出有用的数据信息及文档信息,是一种基本Web检索工作的延伸。Web内容挖掘在传统信息检索的基础上,通过各种新技术的应用来对原先搜索引擎进行改进。

Web内容挖掘的方法主要包括数据库方法和人方法。Web内容挖掘的基本技术是文本挖掘,可以把Web数据看成是一个大型数据库,而对该数据库的查询、检索则需要多种技术进行融合,如:关键词检索、相似性检索、关联规则检索、聚类分析、自然处理语言等;使用人方法,是指通过软件来进行内容挖掘[3],如:信息过滤、个性化Web及智能信息检索方法等。

1.2 爬虫与Web内容挖掘

Web爬虫,是获取网页内容,分解Web中文本结构的一种程序。Web爬虫主要分为传统爬虫和聚焦爬虫。爬虫开始访问的网页称作种子URL,从一个网页开始,进行查询和记录与之相关联的网页链接,如此重复该过程,直至无法再获取相关链接。通过该过程,最终将获得相关网页的所有信息,成为目标数据的广泛数据源。

在Web内容挖掘中,我们拟采用聚焦爬虫挖掘,其挖掘过程比较复杂。具体挖掘原理如图1所示。DNS进程取出URL队列中的第一个URL(通过一种特殊的分析方法过滤与搜索信息无关的链接,将有用的链接放入URL队列中),并通过IP协议连接主机,DNS数据库将域名和IP地址相互映射,如果主机被解析,则直接获取IP,否则,通过DNS数据库获得主机IP。接着READ进程获得IP,并试图打开一个HTTP socket 连接来获取网页页面。页面下载之后,爬虫会检查该页面是否已经被下载过,如果未被下载过,则提取该页面的URL。在检查信息的过程中,我们利用时间戳来解决服务器的状态问题,在检查的过程中,如果时间戳耗尽了,但还没有检查完,爬虫也可以再爬取页面,如果时间戳耗尽了,还没找到可用的URL链接,则会提示找不到所查询的信息;如果找到了可用链接,爬虫会去拉取页面并将该URL记录在相应的表中存储起来。

图1 爬虫原理

1.3 Web挖掘模型

Web数据挖掘模型充分利用了XML的优点,其主要包括三个层次:采集层、数据层和应用层。采集层表示在Internet中搜集相关数据的过程,并将这些数据的格式统一规范化;数据层的主要作用是将搜集到的数据进行预处理,如:补充缺失的数据,去除一些重复的数据,丢掉明显不符合逻辑的偏差数据,修补一些缺失数据等,为数据的应用做准备;应用层,顾名思义,就是对数据层中的数据进行处理、应用,达到Web数据应用的目的。模型如图2所示。

图2 基于Web数据挖掘的总体框架

2 Web数据挖掘在急性高原病中的应用

2.1 急性高原病

急性高原病[4]是人进入高原低氧环境后出现的一种病理反应,引起本病的主要原因是低压低氧。急性高原病主要包括急性高原反应、高原肺水肿和高原脑水肿三种。早期主要表现症状为:失眠、头痛、心跳加快、呼吸困难、紫绀、血压升高、神情恍惚等症状。急性高原病如不及时诊治和治疗,严重时会危机生命。所以,建立急性高原病易感人群预测体系,严格控制身体指标不适合进入高原的人群,从源头解决此问题,降低高原病的患病几率。对保证进藏人群的健康有着重要的作用。

2.2 急性高原病易感人群预测的Web挖掘模型

建立急性高原病易感人群预测模型,首先必须从Internet上挖掘各种有关数据,建立急性高原病易感人群数据仓库,其中比较有针对性的数据库,主要包括MEDLINE,PubMED,PML,

CNKI, CBMDisc,以及万方数据和其它网络数据。

数据挖掘算法使用Naive Bayes 算法,它是 Microsoft SQL Server Analysis Services 提供的一种用于预测性建模的分类算法,Naive Bayes算法应用贝叶斯定理进行建模,其建模分类公式为:P(C/W) = P(C) * P(W/C) / P(W),其中,C表示一个文本的类别,W表示一个文本测试样本,P(C/W)表示该样品属于该类别的概率,在文本分类问题中,需要得到的就是样品属于各个类别的概率值,最大概率值所对应的类别就是该样本被分配的类。而要计算样品属于各个类别的概率值需应用“=”右边的表达式来计算。由于Naive Bayes算法的运算量小,能较快发现输入列与可预测列之间的关系,所以在该模型的挖掘中我们采用Naive Bayes算法。在挖掘的过程中,对发现模式要进行评估,以保证知识的有效性、可用性。最后从知识库中,筛选出急性高原病易感人群身体指标信息。 挖掘模型如图3所示。

图3 急性高原病易感人群预测的Web挖掘模型

3 结语

本文将Web技术与数据挖掘技术相结合,将分散于网络中的各种急性高原病数据进行整理、处理及挖掘,建立了急性高原病易感人群(AMS)预测模型,使得从“源头”上控制AMS发生的人群基数,降低高原病的发病率。目前我国数据挖掘在医学方面的研究还不够深入,应用还不够广泛,计算机科学与医学的融合发展方兴未艾,期待有关人员积极探索。

计算机爬虫技术篇(10)

中图分类号: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数据库访问

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