网络爬虫

2024-09-22

网络爬虫(6篇)

1.网络爬虫 篇一

那天,我正伏案写作,“丁”的一声,一枚绿豆大小的圆形物从天而降,落在桌面上。

我停下笔,正想伸手去掂量那枝“小豆”,不料它却突然伸展成椭圆形状,这分明是一只小爬虫。

那小爬虫仰躺在书桌上一个劲儿朝空中乱踢着。我一时童心大起,拿过尺子一量:五毫米。我用尺子轻轻一拨,希望将它弄近点,谁知剐碰到它的背壳,它立刻缩成一团。

我好奇地看着它小心地展开身体。它那乳白色的小足不断地蹬着,聚集着力量使自己“庞大”的身躯翻转过来。但不知是用力不当还是别的原因,它只能平躺或是侧向某一边,却无法使整个身体翻转站立。虽然每次都以失败告终,但是它毫不气馁(něi),一阵激烈的努力过后,稍微停歇几分钟,便又开始使出浑身解(xiè)数(shù)来实现自己的愿望。我已不抱任何希望了。

我揉了揉发胀的眼睛,如此脆弱的生命却具有如此强大的恒心与毅力是我始料不及的`。

我低下头来,令我惊奇的是,这只原本还仰躺在桌面上的小爬虫居然已经翻身站起,并在书桌上敏捷地爬着。

1.从文中找出与下列意思相对应的词语。

(1)使出全身的本事、手段。( )

(2)开始时没有想到的。( )

2.品读画“____”的句子,联系上下文回答问题。

(1)我揉了一下发胀的眼睛,说明( )

A.“我”视力不好。 B.“我”看得仔细。

(2)“如此脆弱的生命”具体体现在_________、__________。

3.“我”观察爬虫时心理在不断发生变化,正确的变化是( )

A.好奇→不抱任何希望→惊奇

B.不抱任何希望→好奇→惊奇

4.这只小爬虫给了你什么启示?

参考答案:

1.(1)浑身解数 (2)始料不及

2.(1)B (2)只有绿豆大小 五毫米

3.A

4.无论做什么事,只要有恒心、有毅力就能成功。

2.网络爬虫 篇二

网络爬虫也称网络蜘蛛, 它为搜索引擎从万维网上下载网页, 并沿着网页的相关链接在Web中采集资源, 是一个功能很强的网页自动抓取程序, 也是搜索引擎的重要组成部分, 爬虫设计的好坏直接决定着整个搜索引擎的性能及扩展能力。

网络爬虫按照系统结构和实现技术, 大致可以分为:通用网络爬虫、主题网络爬虫、增量式网络爬虫、深层网络爬虫。实际应用中通常是将几种爬虫技术相结合。

1 通用爬虫的设计与实现

1.1 工作原理

通用网络爬虫根据预先设定的一个或若干初始种子URL开始, 以此获得初始网页上的URL列表, 在爬行过程中不断从URL队列中获一个个的URL, 进而访问并下载该页面。页面下载后页面解析器去掉页面上的HTML标记后得到页面内容, 将摘要、URL等信息保存到Web数据库中, 同时抽取当前页面上新的URL, 保存到URL队列, 直到满足系统停止条件。其原理如图1所示。

1.2 爬行策略

为提高工作效率, 通用网络爬虫会采取一定的爬行策略优先爬取重要的网页。常用的有深度优先和宽度优先策略。宽度优先算法的设计和实现相对简单, 可以覆盖尽可能多的网页, 是使用最广泛的一种爬行策略。

一个爬虫如何利用宽度优先遍历来抓取网页呢?在爬虫中, 每个链接对应一个HTML页面或者其它文件, 通常将HTML页面上的超链接称为“子节点”。整个宽度优先爬虫就是从一系列的种子节点开始, 把这些网页中的“子节点”提取出来, 放到队列中依次进行抓取。被访问过的节点放入到另一张表中, 过程如图2所示。

1.3 爬虫队列设计

爬虫队列设计是网络爬虫的关键。因为爬虫队列要存储大量的URL, 所以依靠本地链表或者队列肯定是不够的, 应当寻找一个性价比高的数据库来存放URL队列, Berkeley DB是目前一种比较流行的内存数据库。根据爬虫的特点, Hash表成为了一种比较好的选择。但是在使用Hash存储URL字符串的时候常用MD5算法来对URL进行压缩。

在实现了爬虫队列之后就要继续实现Visited表了。如何在大量的URL中辨别哪些是新的、哪些是被访问过的呢?通常使用的技术就是布隆过滤器 (Bloom Filter) 。利用布隆过滤器判断一个元素是否在集合中是目前比较高效实用的方法。

1.4 设计爬虫架构

爬虫框架结构如图3所示。

其中:①URL Frontier含有爬虫当前准备抓取的URL;②DNS解析模块用来解析域名 (根据给定的URL决定从哪个Web获取网页) ;③解析模块提取文本和网页的链接集合;④重复消除模块决定一个解析出来的链接是否已经在URL Fronier或者是否最近下载过。

下面通过实验来比较一下我们设计的爬虫抓取网页与原网页的对比, 见图4、图5。

通过比较可以发现, 由于原网页有动画等多媒体元素, 虽然爬虫无法抓取下来全部内容, 但基本上是一个完整的爬虫。

2 限定爬虫的设计与实现

限定爬虫就是对爬虫所爬取的主机的范围作一些限制。通常限定爬虫包含以下内容:①限定域名的爬虫;②限定爬取层数的爬虫;③限定IP的抓取;④限定语言的抓取。

限定域名的抓取, 是一种最简单的限定抓取, 只需要根据当前URL字符串的值来作出限定即可。

限定爬虫爬取的层次要比限定域名更复杂。限定IP是限定抓取中最难的一部分。通常分为限定特定IP和限定某一地区的IP。限定特定IP抓取较为容易, 只要通过URL就可以获得主机IP地址, 如果主机IP在被限制的列表中就不抓取。否则正常工作。

想要限定IP抓取, 首先要根据主机字符串获得IP地址。下面我们通过实验来得到IP地址:

贵州民族学院:

主机域名:www.gznc.edu.cn

IP地址:210.40.132.8

贵州大学:

主机域名:www.gzu.edu.cn

IP地址:210.40.0.58

根据URL得到IP地址之后, 就要根据IP地址对某一地区的IP作出限制。但是需要有一个IP与地区对应的数据库, 网上很多这样的数据库都是收费的, 在此我们使用的是腾讯公司推出的一款免费数据库“QQWry.dat”, 只要输入IP地址就可以查到对应IP地址所在的区域。

输入:210.40.0.58

输出:

贵州省贵阳市:贵州大学输入:210.40.132.8

输出:

贵州省贵阳市:贵州民族学院

根据IP地址制作一张列表, 将限制地区的IP地址写入列表, 爬虫如果检测到要抓取的IP地址属于该列表, 就放弃抓取, 这样一个限定爬虫就完成了。

3 结束语

本文介绍了爬虫的工作原理, 重点介绍了通用爬虫和限定爬虫的设计及实现, 并通过实验证明本文设计的爬虫可以达到预期效果。

参考文献

[1]孙立伟, 何国辉, 吴礼发.网络爬虫技术的研究[J].电脑知识与技术, 2010 (15) .

[2]于成龙, 于洪波.网络爬虫技术研究[J].东莞理工学院学报, 2011 (3) .

[3]罗刚.自己动手写搜索引擎[M].北京:电子工业出版社, 2009.

[4]唐波.网络爬虫的设计与实现[J].电脑知识与技术, 2009 (11) .

3.一种改进的网络爬虫搜索策略 篇三

1网络搜索策略分析

1) IP地址

首先对爬虫进行起始IP地址的赋予, 然后依照递增方式根据IP地址进行搜索, 搜索范围为该IP地址段后所有WWW地址稳当, 该搜索不将文档中的超链接地址考虑在内, 不指向其它站点。IP地质搜索策略的优势就在于全面, 不会因为新文档没有被其它稳当引用而搜索不到, 即对新信息源较为敏感;而缺陷也较为明显, 即无法大规模搜索。

2) 深度优先

在爬虫早期的使用中, 深度优化的方式是搜索使用较多的方式。其目的在于搜索结构叶结点, 即在搜索过程中要到达不包含超链接的网页文本。当选中一个HTML文件中的超链接之后被链接的文件首先会执行深度优先式的搜索。继而再进行其他的超链接过搜索, 在进行其他链接搜索之前需要完成单独一条链的搜索。深度优先搜索最终需要沿着网页文件的超链接, 直到无法再继续深入, 然后回到特定的HTML文件, 然后再通过该文件中的超链接进行下一步搜索。若是其他超链接都不能够选择, 那么结束搜索。该方式的优点在于能够将一个网站或者文档集合遍历;而缺陷则在于网络结构复杂, 并且深度无法确定, 有事一旦进去就再也出不来。

3) 宽度优先

该搜索方式中。首先将一个页面中所有能够搜索到的超链接都搜索完毕, 然后再将下一层的搜索予以完成, 就这样逐层递进, 直至底层。该条策略还有一个优势, 就在于其能够将两个网页文件之间的最短路径找出来。该种方式在实际的爬虫策略重视最容易实现的, 因而往往就是最实用最科学的。由于该种方式较为容易实现, 并且功能较齐全。但若需要将一个指定站点全部搜索一遍通过宽度优先的方式需要花费较长的瞬间, 而在进行深层嵌套文件集的搜索中也会遇到该类问题。

4) 专业搜索引擎

当前很多搜索引擎的爬虫往往都会在访问WEB的过程中采取最优原则, 即以获得主题相关页面作为基础, 有效快速的获得相关信息, 每次对价值最大的连接进行访问。由于页面中的连接在页面之中, 因此连接价值高的内容, 其本身的价值就巨大, 所以对链接的评价也就自然转变为对网页的价值评判了。

2 主题爬虫概述

通用网络爬虫在进行搜索的过程中往往抓取的网页都具有一定的数量限制, 一般不会超过1000000个, 不会对网页从新的刷新索引。并且检索速度较慢, 需要进行等待, 一般等待的时间为10s, 甚至更长。而由于受到信息指数级的影响, 以及网页信息动态变化的影响, 通用搜多引擎已经无法适用当前的发展, 而随着科学的进步, 主题爬虫这一定向抓取引擎开始走上网络舞台。

1) 以内容评价为基础

建立在内容评价基础上的搜索策略其主要特点在于对页面中稳步系想你的利用, 以此作为搜索指导, 并依照页面以及连接文本, 同主题 (如关键词、主题相关文档等) 之间相似度的高低来评价链接价值的高低。这类搜索策略的代表有Fish-Search算法、Shark-Search算法。

2) 以链接结构评价为基础

基于链接结构评价的搜索策略, 是通过对Web页面之间相互引用关系的分析来确定链接的重要性, 进而决定链接访问顺序的方法。通常认为有较多入链或出链的页面具有较高的价值。PageRank和Hits是其中具有代表性的算法。

3) 向量空间模型

全文检索技术是搜索引擎的基础技术, 其沿用了信息检索的传统模型。在文档相似度的传统算法中, 应用最为广泛的算法即向量空间模型法, 该算法由Salton教授提出。而向量空间模型则是在该假设中, 而组成文章词条的顺序是没有影响的, 其同文章主题之间的作用相互独立, 所以文档也可以被看做是无需词条合集。

VSM模型以特征项作为文档表示的坐标, 以向量的形式把文档表示成多维空间中的一个点, 特征项可以选择字、词和词组等 (根据实验结果, 普遍认为选取词作为特征项要优于字和词组) , 表示向量中的各个分量。

文章中所采用的算法主要是改进的TF-IDF算法。由于特征词出现的位置具有差异性, 因此特征词对于网页相关性具有不同的价值。例如, 网页的建设者会提供标题中所含有的关键词, 而网页中锚文本关键词则是别人评价网页的。在这一内容上就具有很大的差异, 不同的关键词, 同主页内容的相关性就会具有差异。

4) 页面主题相关性算法

计算页面主题相关性的方式有很多, 例如神经网络法, NAIVEBAYES法, 以及向量空间模型和实例映射模型等。期中在对文档的训练要求上, 空间向量模型的要求相对较低, 能够从少量的文档中将目标特征提取出来, 计算方式相对较为简单, 具有较高的正确率, 在网络信息发现方面较为实用。文章主要采用了空间模型算法, 对简单向量距离进行计算。这一算法的基础思想介绍如下。具体的实现步骤包括以下几个方面的内容:

首先, 在训练文档集中, 将文档以特征向量的方式进行表示。将训练文档集中的文档表示成特征向量。其次, 将每一类的特征词条进行计算, 将该类文档中所有向量的权重进行平均, 将平均值作为类别特征向量中该词条的权值。继而进行类别特征向量的构造, 构造的基本条件即平均值。完成特征向量的构造后, 用其表示待分类新文本, 继而对新文档的类别特征向量相似度进行计算, 并算出其特征向量。最后则对所有的特征向量进行比较, 同时也需要对比分类文本间所具有的相似度, 并对文本进行分类, 将其分到最相似的类别中。

3 小结

基于网页的链接的基本结构, 爬虫会利用链接同页面之间的关系进行搜索, 但是对页面内容同主题之间的相关性却会有所忽视, 因而在搜索的过程中会常常出现主题跑偏的现象。此外, 在爬行的过程中爬虫会以爬行队列作为基础的爬行保障要件, 重复的通过计算PR值或者权重用以维持队列, 页面越复杂, 连接数量越多, 计算的复杂程度就会越复杂。

4.网络爬虫 篇四

从号称“互联网金融元年”的2013年开始,“互联网+”的模式开始渗透到人们日常生活的方方面面,逐步影响着各个传统行业。如京东白条,就是一种新兴的网贷形式,通过追踪用户的消费行为来进行信用评级,最终确定借款额度,其本质是基于大数据的预测。从海量数据中挖掘真正的价值是一系列的处理过程目的,其第一步即是数据的获取,在Web 2.0的时代,大量可公开的数据均是通过网页形式进行展现的,网络爬虫作为一个通用的网页数据采集技术得到了广泛的应用。网络爬虫分为定向爬虫和广义爬虫,本文将介绍定向爬虫的实现和应用。

二、模块设计

本文介绍的网络爬虫采用开源Web应用程序测试工具Selenium来实现,Selenium完全由Java Script编写,因此可运行于任何支持Java Script的浏览器上。就像真正的用户在操作一样,无须用户去关注底层的网络通信协议细节,只要通过程序控制操作流程即可,大大节省了开发时间,方便可视化追踪整个执行流程。另外,因为采用User Agent模式,Selenium可直接绕过某些网页对广义爬虫抓取的限制。

(一)浏览器驱动模块

浏览器驱动模块,即利用Selenium来调用浏览器完成用户定义操作,目前Selenium支持以下几种操作。

1.启动浏览器

支持Chrome,Firefox,IE(可视化浏览器)、静默模式Phantom JS(只启动浏览器内核)或者远程驱动的方式。其中Firefox可以加载用户定制化的Profile等插件来提高对特殊应用的支持,另外可以获得当前URL的HTML信息,用于解析当前文档元素。

2.查找页面元素

支持通过XPath,CSS Selector等方式寻找指定页面元素,找到元素之后通过用户定义的过程来操作。

3.鼠标交互

支持mouse_over,ouse_out,click,double_click,drag_and_drop操作页面元素。

4.页面及表单交互

填充表单,下拉菜单选择,支持单选框和复选框,链接单击,获得元素值和状态。

获得当前页面包含的指定iframe,支持和alert及弹出窗口的交互,并可以在页面选项卡及窗口间跳转。

5.支持Java Script

目前支持基本的Java Script的语法,方便完成页面的异步操作。

6.Cookie管理器

添加、删除、返回所有当前浏览器支持的Cookie。

7.异常处理支持

目前支持驱动查找失败和页面元素查找失败的异常捕获。

(二)页面元素解析模块

页面元素解析模块采用Beautiful Soup来完成,它是一个从HTML或XML文件中提取数据的Python库,能够通过用户指定的转换器实现通用的文档浏览、查找和修改,从而大大节省开发时间。

Beautiful Soup通过将页面内容格式化为内存文档树的方式,提供了直接访问页面元素属性、子节点和遍历查找文档树的方式来完成文档相关的操作。

(三)验证码识别模块

验证码是用以区分用户是计算机还是人的公共全自动程序,可以防止恶意破解密码、刷票、论坛灌水,以及有效防止某个黑客对某一个特定注册用户用特定程序暴力破解的方式进行不断登录尝试。虽然验证码起到了保护作用,但是对于正常的爬虫程序来说,这一关如果无法绕过,则接下来的尝试都是没用的。

验证码识别是一个复杂的过程,涉及模式识别,一般复杂的验证码识别程序也是收费的,不能作为方便的插件嵌入到当前的程序中。而且并不是所有的验证码都可以通过程序来识别,本方案中采用Google的开源工具Tesseract-OCR来完成基础验证码识别,采用神经网络并利用样本集进行有监督的学习,Tesseract-OCR能较好地识别比较规范的数字英文字符串,如图1所示。

但是,对于有噪音及扭曲过的字符串识别效果很差,如图2所示。

所以,一般需要对图像进行预处理,然后再利用Tesseract-OCR来识别,这样可以取得较好的效果。

本项目中使用到的图像预处理技术有初步处理、清除噪点、清除干扰线、图像切割、字符标准化。

1.初步处理

初步处理包含:对比度处理、锐化、二值化。

(1)对比度处理

对比度,其实就是色差,增加对比度可以使亮的地方更亮,暗的地方更暗,从而使得验证码信息和噪音信息的区别更加明显。增强对比度的方案实际上就是将R,G,B通道乘以一个比例,这样就将相近颜色之间的差距变大,处理效果如图3所示。

(2)锐化

图像锐化处理的目的是使模糊的图像变得更加清晰。图像模糊实质就是受到平均或积分运算造成的,因此可以对图像进行逆运算来使图像清晰化。从频谱角度来分析,图像模糊的实质是其高频分量被衰减,因而可以通过高通滤波操作来清晰图像。但要注意,能够进行锐化处理的图像必须有较高的信噪比,否则锐化后图像信噪比反而更低,从而使噪音的增加比信号还要多。因此,一般做法是去除或减轻噪声后,再进行锐化处理。

图像锐化一般有两种方法:一种是微分法,另一种是高通滤波法,处理效果如图4所示。

(3)二值化

验证码的图像往往会加入杂色干扰,形成一个浓淡分布不均的多值图像。把这样一幅多灰度值的图像转化为只有黑(前景文字部分)和白(背景部分)分布的二值图像的工作叫做二值化处理。

一般来说,二值化方法可以分为:全局二值化和局部自适应二值化。全局二值化方法对每一幅计算一个单一的阀值。灰度级大于阀值的像素被标记为背景色,否则为前景。

局部二值化方法以像素的邻域信息为基础来计算每一个像素的阀值。其中一些方法还会计算整个图像中的一个阀值面。如果图像中一个像素的灰度级高于阀值面的计算值,那么把像素标记为背景,否则为前景字符。

常用的二值化方法包括:双峰直方图阀值分割法和平均灰度法,处理效果如图5所示。

2.清除噪点

图像去噪是数字图像处理中的重要环节和步骤,去噪效果的好坏直接影响后续的图像处理工作,如图像分割、边缘检测等。图像信号在产生、传输过程中都可能会受到噪声的污染,一般数字图像系统中的常见噪声主要有:高斯噪声、椒盐噪声等。

目前比较经典的图像去噪算法主要有以下3种。

均值滤波算法:也称为线性滤波,主要思想为邻域平均法,即用几个像素灰度的平均值来代替每个像素的灰度。它能有效抑制加性噪声,但容易引起图像模糊,可以对其进行改进,主要避开对景物边缘的平滑处理。

中值滤波:基于排序统计理论的一种能有效抑制噪声的非线性平滑滤波信号处理技术。中值滤波的特点是首先确定一个以某个像素为中心点的邻域,一般为方形邻域,也可以为圆形、十字形等,然后将邻域中各像素的灰度值排序,取其中间值作为中心像素灰度的新值。这里邻域被称为窗口,当窗口移动时,利用中值滤波可以对图像进行平滑处理。其算法简单,时间复杂度低,但对于点、线和尖顶多的图像,不宜采用中值滤波。

Wiener滤波:使原始图像和其恢复图像之间的均方差误差最小的复原方法,是一种自适应滤波器,根据局部方差来调整滤波器效果,对于去除高斯噪声效果明显。清除噪点效果如图6所示。

3.清除干扰线

一般验证码中会通过增加连续的干扰线来加大信息识别的难度,去除连续干扰线即识别出图像中的最大的连通线。基本思想是认为相邻的前景像素为一个连通线集合,通过递归和回溯法来寻找所有集合中最大的,即为最大连通线。清除连续干扰线效果如图7所示。

4.图像切割

对于去噪后的图像,需要对图片进行切割,切割的目的是为了提取信息,方便把图片中的数字转化为0,1形式的文本,方便后期利用Tesseract-OCR训练神经网络,进一步提高验证码的识别率。一般采用的切割方式是投影法,如图8所示。

如图8所示,对于切割数字3,首先需要找到垂线A和B,判断步骤是:纵向从左向右扫描图片,找到第一条含有信息点的直线记为A,继续向右扫描,从A开始找到第一条无信息点的直线记为B。从投影的角度来看,A与B之间X轴上的投影的信息值均大于0,切割A与B中间的图像后,以新图像为基础,找出C与D,至此便可切割出数字3。

获取了切割好的图像后,由于图像只有黑色与白色两种,因此遍历每一个像素点,根据像素点来进行0,1输出,一般认为黑色像素输出1,白色像素输出0。

5.字符标准化

标准化的意思是指对于图像中的字符尽量做到样式一致,以提高识别率。验证码的设计者往往会通过膨胀、旋转等方式来处理信息,增加识别难度。

(1)骨架细化:腐蚀算法

腐蚀算法的原理类似于剥洋葱,从最外层开始一层一层地将像素去掉,直到只剩下一层像素为止。腐蚀算法要借助凸包算法,用来找一堆像素点里面最外围的一层。腐蚀算法效果如图9所示。

(2)旋转卡壳算法

旋转卡壳算法主要用来处理旋转的字符,一般通过将单个字符左右各旋转一定度数范围来处理。每次1度,旋转后用扫描线法判断字符的宽度,对于标准的长方形字体,在完全垂直的时候肯定是宽度最窄的。旋转卡壳算法效果如图10所示。

经过上述两步处理后,还要将全部字符都缩到最小的字符一样大小来完成标准化处理。

6.样本训练

经过图像切割之后的矩阵包含了字符的相关信息,前景是1,背景是0,通过人工识别出相对应的字符。接着将这个矩阵转换为字符串,建立一个键值对,标明这串字符串是什么字符。之后只须多搜集几个同样字符的不同字符串变形,就能完成制作模版的过程。当搜集了足够多的模版后,就可以开始识别环节了。

通过构建神经网络,对上述字符串提取特征值,将其输入神经网络,再告诉它是什么字符,这样经过一定规模的训练之后,神经网络的内部结构会随之改变,逐渐向正确的答案靠拢,如图11所示。

利用神经网络识别的优势是,对于扭曲的字符识别成功率非常高。

三、总结

通过上述几个模块,就能搭建出一套完整的定向爬虫模型,该定向爬虫的优势有以下几点。

一是通过模拟浏览器操作,可以绕过大部分的网站对与连接数及IP访问限制的策略,大大扩展了爬虫可收集数据的范围。

二是验证码识别模块的增加使得一些门户网站登录的限制也被绕过。

然而,定向爬虫也有自身的缺陷,因为其跟网站页面结构的高度耦合性,如果页面结构发生修改,则对应的爬虫代码也要适当修改。针对上述缺陷,未来可能的一套方案是通过录制用户行为,自动记录、解析相关触发操作关联的页面元素,进而自动生成相关爬虫代码来适应页面结构的变化。

参考文献

[1]Gonzales RC,Woods RE.Digital Image Proeessing(Second Edition).Upper Saddle River:Prentice Hall,2002.

5.网络爬虫 篇五

网络舆情信息是指通过对网络舆情进行汇集和分析而采集到的信息。网络舆情信息的采集工作, 是对其进行研究、分析和应用的基础和前提。目前网络舆情信息采集主要采用人工/半人工方式, 由于需要实时跟踪监控的网站数量多、形式复杂、内容广, 目前已难以应对, 所以有必要依靠信息通讯技术和计算机技术, 建立网络舆情监控采集及分析系统, 以实现对网络舆情信息的及时采集、分析、监控与引导。网络舆情信息的正确采集是基础和前提。本文从对网络舆情信息采集系统技术方案的角度出发, 研究和学习当前网络上常用的对有效信息的提取采集方法, 实现一个简单、高效的网络舆情信息采集系统, 可以提供对网络舆情采集、分析工作的支持。

2、系统关键技术

2.1 网络爬虫的基本原理

网络爬虫又名“网络蜘蛛”, 是一个根据预设条件对互联网上信息进行遍历的计算机程序。网络爬虫的工作过程:首先, 爬虫从初始页面Default的URL开始, 检索页面Default并抽取页面中的所有URL, 将它们添加到爬虫链接队列URLList中。然后, 爬虫按某种规则从队列中获得URL地址, 重复以上过程。在设计爬虫时要考虑很多方面, 最重要的是网络爬虫如何选择下载目标网页, 而不是下载所有网页。因此, 在队列URLList中区分URL地址的先后次序很重要[1]。在这方面国内外研究人员已经做了很多工作。最著名的是已应用于Google搜索引擎中的Page Rank算法[2]。另外一个基于链接分析的算法是由Kleinberg提出的HITS算法[3]。

2.2 网络舆情信息采集的主要方法和技术

舆情信息比较特殊, 主要是那些能够体现网民对某些公共事务的情绪、态度和意见的信息, 它包括文字、图片、音频、视频、动漫等诸多形式。除此之外, 还包括那些反映互联网用户上网行为的一系列信息。因此, 要想及时、全面、准确地汇集到符合决策者需求的网络舆情信息, 并非易事。目前, 我国相关工作部门所采取的方法和手段还难以满足更高的质量标准和要求, 它们往往采取人工方式就某一主题在互联网上采集相关内容, 不仅效率低, 而且所采集的观点是否有代表性也值得商榷。在这个过程中, 对科学、先进、合理的技术和方法的使用是关键性因素, 会直接影响舆情信息汇集与分析工作的最终质量。适于网络舆情信息汇集的方法主要有以下几种。

(1) 搜索引擎:是利用自动抓取程序, 例如web crawlers, Spider, Robot, 在广域网 (Internet) 或局域网 (Intranet) 上遍历各个结点, 使用全文检索技术对在各结点上抓取的信息进行分析, 并进行索引、分类, 建立相应的数据库, 保存以备用户查询的一项信息技术。当用广查找某个关键词的时候, 将按出所有页面内容中包含了该关键词的网页, 并按与关键词的相关度排列。搜索引擎是人们最常用的信息检索方式, 能帮助舆情信息采集人员迅速找到相关信息, 提高效率。由于搜索引擎的数据库各不相同, 因此可同时使用多个, 以加强抽样的可靠性。

(2) 网络调查:近年来, 随着互联网的发展, 网络调查作为一种全新的社会调查方法已开始受到人们的关注和重视。网络调查很适合进行舆情调查。舆情调查是以量化的方式探求民众对社会、政治、经济等的态度和意见的最有效的方法。而很多情况下, 舆情指向的是那些敏感性问题。民众对类似问题的看法是不愿意当众表露的, 面对面会使被调查者感到难堪和压力, 甚至反感、拒绝, 从而得不到任何结果或得不到真实情况。网络调查可以隐去发表意见者的身份, 排除他们的顾虑, 因此也较容易得到真实的态度和意见。

(3) RSS是英文Rich Site Summary (丰富站点摘要) 、Really Simple Syndication (真正简单的整合) , 或是RDF Site Summary (RDF站点摘要, RDF是一种语义网技术) 的首字母缩写。这主要是因为该技术有不同源头, 不同的技术团体对其做出了不同的解释。实际上RSS是一种简单XML格式, 用于为内容整合客户端提供选择性的、汇总过的web内容。更准确地说, RSS是一种“轻量级、多用途、可扩展的元数据描述及联合推广格式”, 它能够用于共享各种各样的信息, 包括新闻、简讯、web站点更新、事件日历、软件更新、特色内容集合和电子商务等。RSS技术诞生于1999年的网景公司 (Netscape) , 随着XML技术的发展和博客群体的快速增长, 逐渐被人们广泛接受, 现在已经成为新闻传媒、电子商务、企业知识管理等众多领域不可缺少的新技术。

(4) 近年来, 关于web信息的利用和研究很多, 大多集中在搜索引擎技术, 旨在利用先进系统和人工智能技术, 以一定策略在互联网中搜集、发现、理解、组织信息后为用户提供网页、图片、软件等检索服务。但是, 随着web上的信息飞速增长, 加上网络内容越来越趋于杂乱, 使用搜索引擎等原来的方法所返回的数据命中率很低, 而且由于数据太多, 也难以维护, 使得失效率很高, 所以难以满足用户的信息需求。在这种背景下, 国内外学者开始提出一项新的技术——web信息采集技术, 它可以实现对Internet上某些或某类站点进行内容分析和分类整理, 从网页中提取有效数据加工, 得到所需要的该领域绝大部分的数据。web信息采集技术往往针对某一具体的主题采集信息, 从而能达到缩小信息采集范围、降低信息容量、减少系统开销和提高数据更新率的目的。通过建立web信息采集系统, 可以为用户提供一步到位的信息再整理过程, 将浩瀚信息从无序化到有序化, 可广泛用于情报收集、信息监控、行情跟踪、专业信息资源站、搜索引擎的二次开发、动态新闻的实时采集更新等。因此, 该项技术对丰富和改进网络舆情信息的采集方法很有借鉴意义。

3、基于网络爬虫的舆情信息采集系统框架及原理分析

系统分为两大部分, 分别是数据管理终端和普通用户端。

3.1 数据终端是整个框架的核心部分, 大体分为三个模块:系统管理、爬虫管理和舆情管理。

⑴系统管理模块:通过角色、用例、模块和用户四个小模块, 将系统与用户层次化、结构化地连接起来形成一个严明的权限管理系统。不同的用户分配不同的角色, 不同角色再分配不用的系统用例, 用例则隶属于模块的各个枝节部分。

⑵爬虫管理:考爬虫管理是整个系统的最核心模块, 包含了“参数配置”和“爬寻任务下达”两个小模块, 通过参数配置, 可以使得爬虫更有针对性。

⑶舆情管理:模块可以动态地将当前爬虫所爬寻的最新舆情信息导入到舆情系统中;可对舆情的类别及舆情文摘进行有效管理;“热点关注度处理”是该模块的重点和亮点。当舆情系统中存在热度超值的舆情是, 会自动提示管理员, 从而起到舆情监控的作用。

3.2 普通用户端是对爬虫采集到的舆情信息进行查阅和收录自己感性趣的舆情, 实现给舆情动态添加关键字。

用户通过在前端录入相应的关键词, 根据系统罗列的相似舆情信息, 选择最为相似的舆情文摘作为所录入关键词的舆情。通过该项操作可以提高所构建舆情信息系统后续检索的准确性和合理性。

基于该架构的网络舆情信息采集系统, 可以有效地对网络中的舆情信息进行抓取和采集, 并支持数据库存储, 为网络中舆情信息的管理和监控提供数据支持。

4、实验结果与分析

系统以国内主流论坛——“天涯社区”为实验对象, 对其热点舆情文摘进行有序爬寻。经过长达5小时的舆情爬寻 (在晚上网络畅通之时) 得到如下结果。

由实验结果分析可以得出本文提出方法的优点:最终的结果按照爬寻对象 (天涯社区) 原有的层次结构进行组织。大类下面含有具体小类别, 小类别下面才是具体的舆情文摘。能够爬寻到绝大部分热度高、时间新的舆情文摘。

系统目前只针对天涯社区进行抓取, 在通用性方面需要进行探究, 不过相信在现有技术基础上, 对其它社区和论坛的舆情爬寻将较易实现。

5、结语

本文在对国内外网络舆情的现状进行分析和研究的基础上, 根据我国目前对网络舆情的应用现状和存在的问题, 针对当前舆情信息系统信息采集的实际情况, 通过研究和深入学习当前网络上常用的对有效信息的提取采集方法, 并解决网络爬虫在舆情信息采集系统中的应用这个关键问题, 提出了一种基于网络爬虫的舆情信息采集系统的架构, 并对其予以了实现。通过对该系统的测试, 验证基于该架构的网络舆情信息采集系统, 可以有效地对网络中的舆情信息进行抓取和采集, 并支持数据库存储, 为网络中舆情信息的管理和监控提供数据支持。

摘要:本文针对当前舆情信息系统信息采集的情况, 提出了一种基于网络爬虫的网络舆情信息采集系统的架构, 并对其予以了实现。通过对该系统的测试, 验证基于该架构的网络舆情信息采集系统, 可以有效地对网络中的舆情信息进行抓取和采集, 并支持数据库存储, 为网络中舆情信息的管理和监控提供数据支持。

6.网络爬虫 篇六

搜索引擎是人们现在互联网冲浪必不可少的一项工具之一,常用的有百度、谷歌等老牌搜索引擎霸主,同时也不乏像搜狗、360搜索这样的新起之秀,各自都有自身优势,占有一定的市场份额,按分类来说都是属于综合性的搜索引擎,以满足各个方面的需求,而缺点是当需要找到某一行业的相关信息时,搜索引擎会同时罗列出行业以外的其他包含有关键字的网页,对于使用者来说必须根据自己的经验去鉴别,体验效果也会大打折扣;相比针对某一领域的垂直搜索引擎,其在搜索精度准度上能很好的把握,比如最近热火的商品比价购物网站如:阿里巴巴旗下的一淘网、网易旗下的惠惠网等,无论行业内外都有较高的影响力,为广大消费者提供了更加便捷的购物平台。而构建其平台的前提和关键技术就是网络爬虫,介绍以Heritrix体系构建的获取商品信息爬虫系统。

2 Heritrix网络爬虫系统

Heritrix是一款基于Java的开源的网络爬虫,由互联网档案馆和北欧国家图书馆联合规范化编写,第一次正式发布是在2004年1月,并不断的被完善和改进,其最出色之处在于良好的可扩展性,开发者可以扩展它的各个组件来实现自己的抓取逻辑,其工作流程为:从URI队列中选择一个URI,根据选定的URI下载远程文件,然后分析归档下载到的内容并写入磁盘镜像目录,再根据一定的策略从分析后的内容中选择URI加入URI队列,然后不断进行上述工作[1],Heritirx组件有:Crawl Order?(抓取任务)是整个抓取工作的起点,它记录了任务的所有属性,即在创建任务时的一系列设置;Crawl Controller(中央控制器)是抓取任务的核心组件,它控制着整个抓取的流程;Frontier?(链接制造工厂)负责所有链接的处理,将已经爬过的URI做标记,并将未处理的链接放入待处理队列;Toe Thread(处理线程)Heritirx是多线程的,每个URL?被一个线程处理,这个线程就叫做Toe Thread,每个线程都会包括一条处理链;Processor(处理器)负责下载网页,提取URI。它包括以下几种:Pre Processor(预处理器)、Fetcher(获取器)、Extractor(抽取器)、Writer(存储器)、Post Processor(后处理器)。

3 信息采集扩展

3.1 分析购物网站网址改进爬行策略

针对购物网站网址的特点,提前制定爬虫爬行策略,从而提高爬行的精度和效率,节省有限资源。以京东商城(http://www.360buy.com/)为例,浏览商城网页可以很清楚的发现整体网站的页面架构,以商品种类将网站分成若干子类,在网站根目录下存放的是商品各类别的主页面,如“家用电器”子站点是“http://www.360buy.com/electronic.html”,主页面是electronic.html;主页面内是商品为更加具体的列表类,如“家庭影院”其网址是“http://www.360buy.com/products/737-794-823.html”,其列表内特点是以目录products的形式存在;而最终产品终端页面如“三星HT-E453K”其网址是“http://www.360buy.com/product/628995.html”,分析其终端产品都存在于product的子目录下。由此京东商城的网站整体网址分布架构还是很清楚。

改进Heritrix爬行策略实现特定网页的抓取。FrontierScheduler存在于包org.archive.crawler.postprocessor中,其功能是将Extractor(抽取器)中所分析出的链接加入到Frontier?(链接制造工厂)中,以便后续处理。在该类中有一个名为inner Process(final Crawl URI curi)函数,该函数并未直接调用Frontier的schedule()方法,而是调用自己内部的schedule()方法,而这个方法中再调用Frontier的schedule()方法。这种调用方式为Frontier Scheduler的扩展留出接口。

我们首先构造一个Frontier Scheduler的子类Frontier Scheduler To360buy,这个类重载了schedule(Candidate URI ca Uri)这个方法,功能是限制抓取的URI必须包含“360buy.com/*.html”或“360buy.com/products/*.html”或“360buy.com/product/*.html”,以保证抓取的链接都是京东商城的产品主页、列表页或产品详细信息页。然后,在modules文件夹中的Processor.options中添加一行“org.archive.crawler.postprocessor.Frontier Scheduler To360buy|Frontier Scheduler To360buy”,这样在爬虫的Web控制台中就可以选择扩展的子类。

3.2 改进多线程爬取策略

Heritirx本身是多线程工作的,每个URL被一个线程处理,同时每个线程对应一条处理链。Heritirx是使用Berkely DB来构建链接队列,这些队列放置在Bdb Multiple Work Queues中以Key-Value形式存在的。URL被赋予Key值,Key值相同的链接放在同一个队列中。默认情况下Heritrix使用Hostname Queue Assignment Policy来来生成Key值。而这种策略是以Host名称为Key值方式实现的,即相同Host名称的所有URL都会被置放于同一个队列中,而这种方式对于单个网站抓取存在效率低的问题。因为在Heritrix中,一个线程从一个队列中取URL链接时,总是会先从队列的头部取出第一个链接,在这之后,这个被取出链接的队列会进入阻塞状态,不会被其他线程使用,直到该链接处理完才会恢复。

因此需要改变Key值的生成方式(queue-assignment-policy),使得所有的URL比较平均地散列到不同的队列中,以提高抓取效率。对应的方法是在Heritrix中扩展一个继承QueueAssignment Policy的子类,覆写其中的get Class Key()方法,该方法将一个链接对象处理后,再调用散列算法生成Key值。散列算法参考范先爽,刘东飞在文献“基于Heritrix网络爬虫算法的研究与应用”一文中采用ELFHash算法,可以将所有的URL散列到不同的队列中去,使所有的队列长度方差较小,保证工作线程的最大效率。实践证明,引入ELFHash算法后,抓取效率提高了很多。

4 结语

探讨了使用Heritirx框架的针对商品信息采集的策略,和改进采集方式的方法。同时也要清楚的认识制定采集策略也存在风险性,如因为URL结构过于复杂而无法制定合适的采集策略,或因为需要采集过多网站,而网站间的策略都不一致需要更多的人工干预。因此,如何提高采集策略的智能化,同时减少算法的复杂性,是今后需要解决的方向。

参考文献

[1]邱哲,符滔滔.Lucene2.0+Heritrix开发自己的搜索引擎.人民邮电出版社,2007.

[2]范先爽,刘东飞.基于Heritrix网络爬虫算法的研究与应用.

[3]姜鹏.主题网络爬虫系统的设计与实现,2010.

上一篇:廉政文化的主题班会活动方案下一篇:微商正能量的早安心语