已阅读5页,还剩60页未读, 继续免费阅读
[精品论文] 基于scrapy框架的新闻实时抓取及处理系统的设计与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
南开大学 硕士学位论文 基于scrapy框架的新闻实时抓取及处理系统的设计与实现 姓名:林伟坚 申请学位级别:硕士 专业:计算机软件与理论 指导教师:袁晓洁 2012-05 摘要 摘要 随着i n t e m e t 的飞速发展,互联网的信息大爆炸给人们带来信息过载的问题, 新闻资讯作为人们接触最多的一种媒体信息,发布方式已经从传统媒体逐渐的 转移到互联网上。新闻资讯作为互联网信息的重要组成部分也在急剧的增加。 在此背景下,论文确定了通过分布式的新闻实时抓取来快速的聚合互联网上各 个站点的新闻内容并对其加以处理的研究方向,以使得人们更加高效、全面的 获取新闻资讯。 论文深入分析并总结了互联网新闻资讯、新闻站点以及新闻爬虫的特点, 将新闻站点的页面精确的划分为导航页面和新闻页面,通过区分这两种页面不 同的监控和爬取措施,详细设计了适用于新闻爬虫的核心算法,包括爬取策略 和更新策略,这两个核心算法能够确保新闻能够被全面和高效的抓取;通过使 用r e d i s 和m o n g o d b 这两个开源的n o s q l 数据库软件,在s c r a p y 爬虫框架的基 础上进行深度定制,实现了一套分布式的新闻实时爬取系统。这套新闻实时爬 取系统在多个模块里均使用了x p a t h 和正则表达式的方法来抽取和识别相关的 数据。 论文还设计并实现了一条可配置模块的新闻数据加工处理的流水线,用来 对爬取后的新闻进行加工处理。流水线的功能模块包括新闻数据抽取、新闻属 性的规整化、分页新闻的合并和新闻内容的清洗等。论文根据中文新闻的特点, 使用s h i n g l e s 的特征抽取方法来抽取新闻特征,在g o o g l e 的网页去重算法 s i m h a s h 的基础上实现了新闻去重算法。 论文实现的分布式的新闻实时爬取和数据清理系统已经应用于实际的生产 过程。通过对1 2 0 多个新闻站点和1 3 0 0 多个初始化的导航页面的爬取和监控, 系统每天能够抓取4 0 多万的页面,其中新闻页面的占比很高,这些运行数据表 明该系统有着较高的抓取效率。后续的数据处理流水线也同时能够胜任每天的 新闻的加工和处理。 关键词新闻爬虫,s c r a p y ,数据抽取,新闻去重 a b s t r a c t a b s t r a c t w i t ht h er a p i dd e v e l o p m e n to fi n t e m e t ,t h ei n f o r m a t i o ne x p l o s i o no ft h ei n t e m e t b r i n g st h ep r o b l e mo fi n f o r m a t i o no v e r l o a d t h er e l e a s em e t h o do fn e w sh a sb e e n s h i f tf r o mt r a d i t i o n a lm e d i at ot h ei n t e m e t a sa ni m p o r t a n tp a r to ft h ei n t e r n e t i n f o r m a t i o n ,n e w sa l s oi n c r e a s e sd r a m a t i c a l l y i no r d e rt om a k ei tm o r ee a s yt og e t t h en e w s ,t h ep a p e rd e s i g n sar e a l - t i m ed i s t r i b u t e dn e w sc r a w l e rt o a g g r e g a t et h e n e w si nt h ei n t e m e ta n da p i p e l i n et op r o c e s st h en e w sd a t a t h ep a p e r sa n a l y z e sa n ds u m m a r i z e st h ec h a r a c t e r i s t i c so fi n t e m e tn e w s ,n e w s s i t e sa n dn e w sc r a w l e r , a n dd e s i g n sc o r ea l g o r i t h m so ft h en e w sc r a w l e rb a s e do n t h e s ec h a r a c t e r i s t i c s ,w h i c ha r ec r a w l i n gs t r a t e g ya n d u p d a t i n gs t r a t e g y b a s e do nt w o o p e ns o u r c ed a t a b a s e s ,r e d i sa n dm o n g o d b ,a n ds c r a p yc r a w l e rf r a m e w o r k ,t h e p a p e rd e s i g n sar e a l t i m ed i s t r i b u t e dn e w sc r a w l e r ,w h i c hu s e sx p a t ha n dr e g u l a r e x p r e s s i o n st oe x t r a c ta n di d e n t i f yt h er e l e v a n td a t a t h ep a p e ra l s oi m p l e m e n t san e w sd a t ap r o c e s s i n g p i p e l i n e ,i n c l u d i n gn e w sd a t a e x t r a c t i o n ,p r o p e r t i e sn o r m a l i z a t i o n ,n e w sp a g e sc o m b i n e ra n dn e w sc o n t e n tc l e a n i n g a c c o r d i n gt ot h ec h a r a c t e r i s t i c so ft h en e w s ,t h ep a p e ru s e ss h i n g l e sa st h ef e a t u r e e x t r a c t i o nm e t h o da n dg o o g l e ss i m h a s ha st h en e a r - d u p l i c a t e s d e t e c t i n ga l g o r i t h m t h en e w sc r a w l e ra n dp r o c e s s i n gp i p e l i n eh a v eb e e ns e tu pi na c t u a lp r o d u c t i o n b yc r a w l i n ga n dm o n i t o r i n gm o r et h a n12 0n e w ss i t e sa n dm o r et h a n13 0 0i n i t i a l n a v i g a t i o np a g e ,e v e r yd a yt h es y s t e mi sa b l et oc r a w lo v e r4 0m i l l i o np a g e s , i n c l u d i n gah i g hp r o p o r t i o no ft h en e w sp a g e t h ed a t as h o wt h a tt h es y s t e mi s e f f i c i e n t t h ep r o c e s s i n gp i p e l i n ei sa l s oc a p a b l eo fp r o c e s s i n gt h ed a i l yn e w s k e yw o r d n e w sc r a w l e r ,s c r a p y , d a t ae x t r a c t i o n ,n e w sd e d u p i i 第一章引言 第一章引言 第一节研究背景与意义 随着i n t e m e t 的飞速发展,互联网正在渗透到我们生活的方方面面,从精神 层次的信息获取到物质需求都能通过互联网来实现。w w w ( w o r l dw i d ew e b ) 技术是i n t e m e t 技术的最好呈现方式,凭借其方便、快捷以及丰富的表达方式, 已经成为i n t e m e t 上应用最广泛的交互方式。随着信息大爆炸式的发展,数以亿 计的网站不断涌现,搜索引擎收录的网页数量也在急剧增长,g o o g l e 在2 0 0 8 年 的时候就通过博客宣布他们索引的网页数量已经达到1 万亿了,即便如此, g o o g l e 索引的网页也仅仅是互联网所有网页的- 4 , 部分。 互联网上丰富的信息给人们带来了极大的便利,通过互联网,人们可以高 效快捷地获取各式各样的信息。但是,信息的大爆炸同时也给用户带来信息过 载的问题,如何能够快速的从海量信息中选择自己所需要的是一个越来越迫切 的问题。2 0 世纪末,y a h o o 作为第一代互联网信息获取入口解决了当时信息过 载的问题,成为了互联网奇迹的创造者之一。但是随着互联网的继续发展,信 息过载的问题越来越严重,y a h o o 这种目录式的信息集合网站已经不能很好的解 决大信息量的问题。1 9 9 8 年创立的g o o g l e 逐渐替代了y a h o o 作为新一代的互联 网信息的获取入口,改变了整个互联网获取信息的模式。作为搜索引擎,g o o g l e 会使用网络爬虫主动收集互联网上的各类信息,加以整理和存储,同时对这些 信息建立索引,以供用户快速的检索。这种模式使得用户从目录式导航网页的 局限中解脱出来,能够快速的查找到互联网上的各种信息,极大的提高了工作 效率和获取的信息的质量。g o o g l e 也因此成为了互联网的的二代霸主。 网络爬虫作为搜索引擎的一个重要组成部分,为搜索引擎从互联网上下载 网页,它抓取的效率影响搜索引擎能够索引的页面的数量及其更新的频率,直 接决定着搜索引擎的质量。它不仅可以为搜索引擎提供最基本的数据来源,还 可以为其判别数据的质量。 新闻是现实生活中人们接触最多的一种媒体信息。随着互联网的飞速发展, 新闻已经从传统的媒体逐渐的转移到互联网上。互联网时代的到来使得新闻的 时滞无限趋向于零,人们获取新闻资讯的途径也逐渐的从传统媒体转移到通过 互联网来进行。同样的,新闻资讯作为互联网信息的一个重要组成部分也在不 第一章引言 断的增多。如何使得人们更加高效、全面的获取新闻资讯也是一个很大的挑战。 与搜索引擎一致的是,新闻资讯的聚合首先要解决的是新闻资讯的获取问 题。传统的网络爬虫平等的对待互联网的所有信息,并没有针对新闻资讯的爬 取做特殊的处理。在发布后很长一段时间内才被抓取并展现给用户的新闻资讯 已经失去了它的意义。通过传统的网络爬虫来爬取新闻资讯已经不能满足新闻 的时效性的要求。因此,必须要有一个针对新闻资讯的特点而设计的聚焦爬虫 来爬取新闻,使其能够高效的抓取新闻资讯。 互联网的新闻资讯随着互联网的发展也已进入海量的时代,那种只依赖于 单台的服务器就能够很快处理任务已经越来越少。新闻资讯的爬取也不能靠单 台服务器来进行,设计一套分布式的爬取系统势在必行。除了分布式新闻爬虫 之外,新闻资讯获取还需要一套行之有效地新闻数据的处理方法来加工和处理 新闻数据,使其能够规整的展现给用户。 总之,新闻资讯的获取需要有高性能的分布式爬虫技术、数据的加工处理 技术以及海量数据存储技术的支持,对分布式新闻爬虫以及新闻数据处理的相 关技术的研究既能满足用户高效、全面地获取新闻资讯的需求,又有很高的学 术研究价值。 第二节主要研究内容与工作 为了能够全面、快速的获取新闻资讯的需求,论文设计了一套分布式的新闻 实时抓取系统以及新闻数据处理的方案。主要完成了以下工作: 1 深入调研传统全网爬虫的发展及其相关算法和技术,详尽对比了几个性 能较优的全网爬虫的优缺点,以此来指导新闻爬虫系统的设计。 2 深入分析并总结了互联网新闻资讯、新闻站点以及新闻爬虫的特点,基 于这些特点,详细设计了新闻爬虫的核心算法:爬取策略和更新策略。 3 在深度定制的s c r a p y 爬虫框架的基础上,结合两个开源数据库软件r e d i s 和m o n g o d b 实现了一套分布式的新闻实时爬取系统。通过对爬取系统 的运行数据的分析,确定系统的爬取性能。 4 设计了一套可配置模块的新闻数据加工处理的流水线,其中包括新闻数 据抽取、新闻属性的规整化、分页新闻的合并和新闻内容的清洗等模块。 5 根据中文新闻的特点,结合s i m h a s h 和s h i n g l i n g 算法,实现了较为高效 2 第一章引言 的新闻去重算法。 第三节论文组织结构 论文后续的章节按如下内容进行组织: 第二章详细叙述了网络爬虫的发展及其相关算法和技术。首先,介绍了网 络爬虫的定义及其常用的算法和模块,然后还选取了性能较为优秀的三个开源 爬虫作为代表,仔细调研了它们的特点,并做了详细的比较;本章的第二部分 还介绍了论文实现新闻爬虫所使用的s c r a p y 框架,详细描述了s c r a p y 的组成、 架构以及程序执行的流程。 第三章详细介绍了分布式新闻实时抓取系统的实现方案。先介绍了新闻爬 虫的特点,并根据这些特点制定新闻爬虫的实现方案,通过对s c r a p y 爬虫框架 的深度定制,借助开源的两个n o s q l 数据库r e d i s 和m o n g o d b 设计和实现了一 套分布式的新闻实时抓取系统;本章最后一部分通过对爬虫系统实际运行过程 中的数据进行统计分析。 第四章详细介绍了新闻数据的处理方案,特别是新闻数据的抽取。本章调 研了传统信息检索系统里网页正文数据的抽取方法,总结了新闻数据特点,并 介绍了基于调研和总结内容设计的新闻数据抽取方法,同时还简要介绍了新闻 属性的规整化、分页新闻的合并、新闻内容的清洗和新闻去重等其他数据处理 模块。 第五章总结了论文的所有工作,并提出了对未来研究工作的展望。 3 第二章爬虫研究及s c r a p y 框架介绍 第二章爬虫研究及s c r a p y 框架介绍 网络爬虫又称为网络蜘蛛,是一段计算机代码,它按照一定的逻辑和算法 从互联网上抓取和下载网页,是搜索引擎的一个重要组成部分。定向爬虫是网 络爬虫的一种,它是用来爬取互联网中某一特定类别的信息。新闻爬虫就是一 种常见的网络爬虫。本章将介绍网络爬虫常用的算法以及能够快速开发定制爬 虫的s c r a p y 框架。 第一节网络爬虫研究 网络爬虫是一段自动抓取和下载网页的程序,它为搜索引擎从万维网上下 载网页,它抓取的效率影响搜索引擎能够索引的页面的数量及其更新的频率, 直接决定着搜索引擎的质量。一个好的网络爬虫需要有良好的结构和优秀的算 法的支撑。本节将重点介绍网络爬虫的基本架构和算法。 2 1 1 网络爬虫简介 随着互联网的快速发展,数以亿计的网站不断涌现,搜索引擎收录的网页 数量也在急剧增长,g o o g l e 在2 0 0 8 年的时候就通过博客宣布他们索引的网页数 量已达1 万亿, 即便如此,g o o g l e 索引的网页也仅仅是互联网所有网页的- d , 部分。搜索引擎是通过网络爬虫来获取这些数据。网络爬虫通过超链接遍历整 个互联网,并将遍历过的网页下载保存到数据库中。在数据剧增的今天,网络 爬虫的效率直接影响着搜索引擎的的质量,在过去的几年里,很多专家学者致 力于网络爬虫效率的提高,并发表了诸多成果。世界上的第一个网络爬虫是 m a t t h e wg r a y 的w a n d e r e r ,产生于19 9 3 年。在w a n d e r e r 诞生后,数篇关于网 络爬虫的论文 1 2 3 1 在前两届w w w 会议上发表。 一个高效的网络爬虫程序需要有两个很重要的特性。首先,它必须有一个 的爬取策略,比如:决定下一个爬取页面的策略。第二,它必须有一个高度优 化的系统架构,能够在短时间内下载大量的网页,能够从系统崩溃中恢复,同 时考虑资源和服务器的负载。 网络爬虫以多个u r l 来初始化,这些u r l 称为u r ls e e d s 。u r ls e e d s 集 合须能够确保网络爬虫能够覆盖尽量多的网站。d m o z 网站上的站点链接就经 4 第二章爬虫研究及s c r a p y 框架介绍 常被用来当初网络爬虫的u r ls e e d s 。d m o z 网站( w w w d m o z o r g ) 是一个著名 的开放式分类目录( o p e nd i r e c t o r y p r o j e c t ) ,网站上面维护着大量的互联网站 点的链接。 网络爬虫将互联网当成一张大网,网页是一个个的节点,网页间的超链接 表示节点和节点的连接关系。网络爬虫从初始的节点集合u r ls e e d s 开始, 按照跟随着超链接遍历这张大网。在遍历的过程中,每访问一个页面,就从页 面上抽取新的u r l 放入到爬取队列。而定向爬虫需要对网页进一步的分析,会 过滤掉网页中无用的部分,保留有效的区域,并抽取u r l 放入队列。爬虫会根 据一定的调度算法从u r l 队列中选取下一步要爬取的网页,如此循环,直到u r l 队列为空。网络爬虫爬取完网页后会对所有的网页进行分析、清洗和抽取等工 作,将处理完的数据保存。 2 1 2 网络爬虫应用 网络爬虫在获取数据的时候可以应用于多种场景,下面介绍几种常见的网 络爬虫的应用,并描述一下它们各自的爬行策略。 第一种常见的爬虫是广度优先爬虫。这是全网搜索引擎的网络爬虫的主要 爬行策略。为了要构建整个互联网的搜索引擎,网络爬虫要想有较高的效率, 一般都会以u r ls e e d s 开始,以广度优先的爬行策略来遍历互联网这张大网。 实际上,搜索引擎的爬虫并不是严格按照广度优先的策略来爬取数据,它采用 了多种爬行策略的结合。 第二种常见的爬虫是重新爬取已有的页面以获取数据的更新。在某些应用 场景下,当网页被爬取下来后,需要定期的重新爬取,以获得数据的更新。实 现这种爬虫的策略比较简单,可以直接启动另一个宽度优先的爬虫,或者将已 爬取的网页的u r l 再次放入爬取队列。但是比较优秀的爬虫会根据网页的更新 频率和重要性自动调整爬取的频率,论文【4 5 研究的就是这方面的内容。 第三种爬虫是聚焦爬虫,也叫定向爬虫。本论文所研究的爬虫正是这一类 型的爬虫。很多垂直搜索引擎采取特定的爬行策略来爬取某种特定类型的网页, 例如,网页上的某个特定主题或语言、图像、m p 3 文件等。百度m p 3 搜索、新 闻搜索和去哪儿旅游搜索等垂直搜索引擎都是使用聚焦爬虫来爬取数据。聚焦 爬虫需要有优秀的策略来发现和爬取有用的页面,避免下载过多无用的页面, 浪费昂贵的带宽资源。一般情况下,聚焦爬虫会采用启发式的方法,或者更普 5 第二章爬虫研究及s c r a p y 框架介绍 遍的链接结构分析的方法 6 【7 噜口机器学习的技术 8 川来发现和爬取页面。 第四种爬虫是深网爬虫。互联网上的信息不仅仅是网页,还有很多的信息 是存储在数据库当中的,这些数据不能够展示在静态的网页上面,只能通过网 页中的表单向服务器发送请求才能获得这些数据,这些数据也叫d e e pw 曲。现 在有大量的学者对d e e pw 曲数据的获取做了很深入的研究 1 0 。 最后一种爬虫是取样爬虫,这种网络爬虫随机选择网页进行爬取和取样, 经典的应用是为了取样估计互联网网页的数量或者用来评估搜索引擎的质量。 论文 1 1 】 1 2 】 1 3 1 都是这个领域的典型代表。 2 1 3 网络爬虫调度策略 互联网网页的数量不计其数,网络爬虫要在有限的带宽中以较高的效率爬 取的有效的网页需要有优秀的调度策略的支撑。常见的网络爬虫的调度策略有 下面几种: 1 广度优先爬取 上一节已经提到过这种爬取策略,它是以广度优先的方法来遍历整个互联 网。n a j o r k 和w i e n e r 在论文【1 4 里已经对这种调度策略做了较为详尽的实验。 2 导入链接计数( b a c k l i n kc o u n t ) 1 5 这种调度策略优先爬取那些被最多超链接指向的页面,所以下一个要爬取 的页面总是已爬取的所有页面所指向的次数最多的。它的原理是:如果一个页 面很受欢迎的话,那么会有很多其他页面中的超链接( h y p e r l i n k ) 指向该页面, 而那些链接就被称为导入链接或者入链( b a c k l i n k i n l i n k ) 。一般情况下,导入 链接数目越大,那么该页面就越受欢迎。 3 批量p a g e r a n k ( b a r c hp a g e r a n k ) 导入链接计数的方法没有办法体现不同超链接指向的价值,而p a g e r a n k 算 法充分考虑到了不同超链接指向的所贡献的价值是不同的,但是由于每次抓取 之后都会有链接的变化,因此选择按照批量的方式计算一部分链接的p a g e r a n k , 然后从中选择k 个p a g e r a n k 高的链接进行爬取。在爬取完成后,再次更新计算 p a g e r a n k ,进入下一轮的抓取,如此循环。 4 部分p a g e r a n k ( p a r t i a lp a g e r a n k ) 部分p a g e r a n k 的算法很像批量p a g e r a n k ,它们都是预估的,但是批量 p a g e r a n k 的计算过于频繁,代价很高。部分p a g e r a n k 是根据p a g e r a n k 的思想, 6 第二章爬虫研究及s c r a p y 框架介绍 直接将父页面的p a g e r a n k 值按p a g e r a n k 的传递公式传给未抓取的子页面。 5 在线页面权重计算( o n l i n ep a g ei m p o r t a n c ec o m p u t a t i o n ,o p i c ) a b i t e b o u l 提出了一种基于o p i c ( o n l i n ep a g ei m p o r t a n c ec o m p u t a t i o n ) 算法 的抓取策吲1 6 】。o p i c 算法是n u t c h 早期版本的默认算法,是针对静态图的。o p i c 算法的基本思想是:每个页面都有一个初始的分值,在抓取某页面时,该页面 的分值会平均地分配到其所接向的页面,总的整个网络图中总分值是固定的, 在抓取网页的过程这些固定的分值在页面之间流通,很直观地,o p i c 算法中页 面的重要性就定义为流通过程中流过该页面的分值总量在总流通量中占的比 重。 2 1 4 网络爬虫必需模块 一个优秀的网络爬虫不仅需要有个好的调度策略,还需要有很多必需的 功能模块,这些模块包括网页编码的探测、h t m l 的解析与超链接的抽取以及分 词等。 网页编码的探测是网络爬虫的一个重要组成模块,网络爬虫通过编码探测 来获得网页的编码格式,再将网页进行转码。如果编码探测模块不能正确识别 编码的话,爬虫抓取的信息将无法正确转码。网页源码的编码探测一般有两种 方式,一种是通过分析网页源码中m e t a 信息,比如c o n t e n t t y p e ,来取得编码, 但是某些网页不的c o n t e n t t y p e 中不含任何编码信息,这时需要通过第二种方式 进行探测,第二种是使用统计学和启发式方法对网页源码进行编码探测。 h t m l 解析是网络爬虫获取网页主要内容和超链接的模块,只有通过h t m l 解析器的正确解析,网络爬虫才能不断地往u r l 爬取队列添加u r l 。网络爬虫 的h t m l 解析器不仅需要能够争取解析网页,还需要有较高的容错性和性能。 互联网的网页是由人或者机器生成的,难免存在结构上的错误。h t m l 解析器 需要能够扫描h t m l 文件并修复许多在编写h t m l 文档过程中常犯的错误,例 如:添加缺失的元素、用结束标签关闭相应的元素,以及修复不匹配的内嵌元 素等。 分词是指将文本内容划分成一个个单独的词的过程,它是网络爬虫抽取完 数据后,对数据进行索引前的一个重要环节。英文的文法里每个单词之间有空 格隔开,分词较为简单,而中文分词要将无间隔的汉字序列切分成一个一个单 独的词,复杂度很高。现有的分词算法可分为三大类:基于字符串匹配、基于 7 第二章爬虫研究及s c r a p y 框架介绍 理解和基于统计的分词算法。按照是否与词性标注过程相结合,又可以分为单 纯分词方法和分词与标注相结合的一体化方法。 2 1 5 开源网络爬虫比较 网络爬虫发展到现在相关技术已经较成熟,目前有不少开源的网络爬虫。 本节选取了三个性能较为优秀的开源网络爬虫做了下横向对比,结果见表2 1 。 表2 1 开源网络爬虫特点比较 爬虫 n u t c hh e r i t r i xl a r b i n 开发语言 j a v aj a v ac + + 不支持a l l o w 字段,解 遵 循 r o b o t s严格按照r o b o t s t x t 文 析是找t o k e n ,导致 r o b o t t x ta l l o w 和它后面的路 e x c l u s i o np r o t o c 0 1件和m e t ar o b o t s 标签 径都被当成是前面的 d i s a l l o w 。 只获取并保存可索精确的站点内容的深 获取单个、确定 引的内容,可以修剪度复制,包括图像以及 爬取内容网站的所有联结,甚 内容,或者对内容格其他非文本内容。不对 至可以镜像一个网站 式进行转换页面进行修改。 下载控制器以主线程 形式运行。把下载地址 管理器f r o n t i e r 中地址 列表传递给线程池中 n u t c h 使用了o p i c的t o e t h r e a d s ,完成下广度优先爬取,四个 调度作为默认的u r l 调载任务。优先级不同的f i f o 度策略。调度器f r o n t i e r ,用来队列。 确定下一个将抓取的 网页。实现对网站访问 的均衡处理,避免造成 网站压力。 命令行运行、控制,通过t e l n e t 协议远程 管理界面w e b 控制管理界面 配置文件向爬虫添加新的u r l 8 第二章爬虫研究及s c r a p y 框架介绍 续表 爬虫n u t c hh e r i t r i xl a r b i n 分布式 按照h a d o o p 的模式 来编写以获得分布不支持不支持 处理 式的能力 更新替换旧的内容添d h ( 追d n ) 新的内容 可设置下载的最大字 无法对每个站点的 节,最大数量的下载文仅能进行简单的全局 最大连接数,连接延 档,和最大的下载时设置,如并行获取网 个性化 时,u r l 过滤,代 间。可设置工作线程数页的数量、并行解析 理服务器,抓取深 量。可设置所利用的带d n s 的数量、网页抓取 设置宽的上界。可在设置之深度、是否允许抓取 度,抓取网页总数等 后一定时间重新选择。域名外连接、对同一 参数作单独设置,只 包含一些可设置的过个服务器获取网页的 能用全局设置。 滤机制,表达方式,u r i间隔时间等 路径深度选择等 分布式的处理,可扩 高度可扩展,性能优 优点展,与l u c e n e 紧密性能好,稳定 厶士厶 秀,功能齐全 ;口 z z l 对中文支持不够,容错 功能单一,没有删除 性差,对于重复爬取 缺点对中文支持不好功能,排重会误判 u r l 处理不好,恢复 ( b l o o mf i l t e r ) 能力很差。 9 第二章爬虫研究及s c r a p y 框架介绍 第二节s c r a p y 框架介绍 网络爬虫的相关技术已经比较成熟,要实现定向的新闻爬虫需要经过深度 定制。s c r a p y 2 4 1 是套基于t w i s t e d 2 5 1 的异步处理的爬虫框架,是用纯p y t h o n 实 现的,用户只需要定制几个模块就可以轻松的实现一个爬虫,用来抓取网页内 容以及各种图片。论文选择用s c r a p y 框架来定制新闻爬虫。本节将重点介绍 s c r a p y 框架。 2 2 1 s c r a p y 组成 s c r a p y 是一套非常成熟的快速的网页抓取框架,用来抓取网页,并从网页 中提取结构化数据。它用途广泛,可以应用于从数据挖掘到监控和自动化测试 等场景。目前已经有很多企业在生产环境中使用s c r a p y 。s c r a p y 是基于t w i s t e d 开发的,使用的是纯p y t h o n 实现的。s c r a p y 设计理念简单,提供了各种网络爬 虫所需要的特性。开发人员可以以较低的成本来使用这些功能;它的效率较高, 用它开发的爬虫在单台服务器上运行每天可以爬取5 0 0 个站点;它的扩展性好, s c r a p y 在设计之初就把可扩展性列入重要的位置,它提供多种机制来定制个性 化插件;s c r a p y 具备很好的可移植性,它可以运行在l i n u x 、w i n d o w s 、m a co s 和b s d 上面;s c r a p y 的代码有良好的测试框架,代码测试的覆盖率很高。 s c r a p y 由引擎( s c r a p ye n g i n e ) 、调度器( s c h e d u l e r ) 、蜘蛛( s p i d e r s ) 、数 据处理流水线( i t e mp i p e l i n e ) 和下载器( d o w n l o a d e r ) 五大部分组成,其中还 包括各种中间件辅助这五大模块实现更为精细的爬虫功能。这五大模块及其中 间件的功能如下: 1 s c r a p y 引擎 s c r a p y 的引擎是用来控制整个系统的数据处理流程,并进行事务处理的触 发,负责接收和转发其他各个模块的请求和响应,是s c r a p y 的心脏和大脑。 2 调度器 调度器维护着一个爬取的优先级队列,决定下一个要爬取的u r l ,从s c r a p y 引擎接受请求并排序列入队列,并在s c r a p y 引擎发出请求后返还给他们。这个 爬取的优先级队列是一个极其简单的内存队列,每个爬虫维护着自己的一个内 存队列,不能在爬虫间共享,也不能固化到磁盘,当发生错误,程序崩溃时, 队列里的所有信息都会丢失。 1 0 第二章爬虫研究及s c r a p y 框架介绍 3 蜘蛛 蜘蛛模块负责解析下载的网页,并抽取需要进一步爬取的超链接,它是由 用户自己定义的,用户白定义的每个蜘蛛都能处理用户指定的一个或一组域名, 也是说用户通过蜘蛛来定义特定网站的抓取和解析规则。蜘蛛在整个抓取过程 中的处理流程如下:首先从头s t a r tu r l s 域中获取爬取第一个网页的初始请求, 当初始请求被响应并在页面成功下载后调用一个指定回调函数来处理页面。第 一个请求是通过调用蜘蛛的s t a r t方法生成的,它默认从列表r e q u e s t s ( ) s t a r tu r l s 中获取初始化的u r l 并生成请求,然后运行回调函数来解析页面。 蜘蛛分析出来的结果有两种:一种是需要继续抓取的链接;另一种是需要 保存的数据,两种结果是可以混杂在同一个结果列表里返回的,引擎会通过列 表元素的数据类型进行区分,数据被封装成i t e m 类型,请求则被封装成r e q u e s t 类型,r e q u e s t 类型的数据会转发给调度器进行调度,下载后通过指定的回调函 数处理。 4 下载器 下载器从引擎那里获取要下载的u r l ,并向服务器发送请求下载页面。下 载器通过下载器中间件实现各种网络协议的数据的下载,比如h t t p 和f t p 等。 5 数据处理流水线 数据处理流水线分析、过滤和存储需要保存的数据。顾名思义,数据流水 线是一系列流水操作的集合,每个流水操作都可以由开发人员进行定义,开发 人员可以在配置文件里指定数据处理流水线各个模块的的顺序,同时还在流水 线模块中决定数据需要在流水线中继续处理或者丢弃。数据处理流水线通常执 行的工作有:h t m l 数据的清洗、解析数据字段的验证、检查数据是否重复和 数据的存储等。 6 中间件( m i d d l e w a r e s ) 中间件是位于s c r a p y 引擎和各个模块之间的钩子框架,主要是用来处理 s c r a p y 引擎和各模块之间的请求及响应。它提供了一个自定义代码的方式来扩 展s c r a p y 的功能。s c r a p y 的中间件有下载器中问件、蜘蛛中间件以及调度器中 间件。下载器中间件和蜘蛛中间件如 第二章爬虫研究及s c r a p y 框架介绍 表2 2 所示。 1 2 第二章爬虫研究及s c r a p y 框架介绍 表2 2 中间件列表 中间件列表功能描述 r o b o t s t x t m i d d l e w a r e r o b o t t x t 解析 h t t p a u t h m i d d l e w a r e h t t p 验证 d o w n l o a d t i m e o u t m i d d l e w a r e下载超时处理 u s e r a g e n t m i d d l e w a r e u s e ra g e n t 处理 r e t r y m i d d l e w a r e 重新连接 d e f a u l t h e a d e r s m i d d l e w a r e 默认h t t ph e a d e r 下载器 r e d i r e c t m i d d l e w a r eh t t p 重定向 中间件 c o o k i e s m i d d l e w a r ec o o k i e 管理 h t t p p r o x y m i d d l e w a r e h t t p 代理 h t t p c o m p r e s s i o n m i d d l e w a r e h t t p 压缩 c h u n k e d t r a n s f e r m i d d l e w a r e块传输 d o w n l o a d e r s t a t s下载器统计 h t t p c a c h e m i d d l e w a r eh t t p 缓存 h t t p e r r o r m i d d l e w a r eh t t p 错误处理 0 f f s i t e m i d d l e w a r e站外u r l 过滤 蜘蛛中 r e f e r e r m i d d l e w a r e填充请求的r e f e r e r 字段 间件 u r l l e n g t h m i d d l e w a r e u r l 长度过滤 d e p t h m i d d l e w a r e 抓取深度跟踪 1 3 第二章爬虫研究及s c r a p y 框架介绍 2 2 2 s c r a p y 框架架构 s c r a p y 框架的数据处理流程由s c r a p y 引擎进行控制,它的整体架构如图2 1 所示。图中的绿色箭头表示数据的流向。 图2 1s c r a p y 框架架构图 s c r a p y 的运行流程为: 1 s c r a p y 引擎打开一个初始的域名,并定位到相应的蜘蛛处理属于这个域 名的u r l ,然后让蜘蛛获取第一个要爬取的u r l 。 2 s c r a p y 引擎从蜘蛛那里获得第一个需要爬取的u r l ,并将该u r l 包装 成请求并指定响应该请求的回调函数,然后将其发送给调度器。 3 s c r a p y 引擎向调度器请求下一步要进行爬取的页面。 4 调度器将下一个要爬取的u r l 以请求的方式返回给s c r a p y 引擎,s c r a p y 引擎通过下载器中间件将请求发送给下载器。 5 当下载器执行请求、下载完网页以后,下载的页面内容通过下载器中间 件发送给s c r a p y 引擎。 6 s c r a p y 引擎在收到下载器的返回的下载数据后,通过蜘蛛中问件将响应 1 4 第二章爬虫研究及s c r a p y 框架介绍 数据发送到蜘蛛进行数据处理。 7 蜘蛛解析下载的页面并返回网页解析后的数据,然后将抽取出的要继续 爬取的u r l 再次封装成请求发送给s c r a p y 引擎。 8 s c r a p y 引擎将解析完成的数据发送至数据处理流水线,并将新的u r l 爬取请求继续转发给调度器。 9 系统重复步骤2 8 ,直到调度器中没有新的请求时,关闭爬虫。 第三节本章小结 本章介绍了网络爬虫的定义及其常用的算法和模块,还选取了性能较为优 秀的三个开源爬虫作为代表,仔细调研了它们的特点,并做了详细的比较;本 章的第二部分还介绍了论文实现新闻爬虫所使用的s c r a p y 框架,详细描述了 s c r a p y 的组成、架构以及程序执行的流程。 网络爬虫是一段按照特定的逻辑和算法抓取和下载互联网网页的计算机程 序,它为搜索引擎提供数据来源,是搜索引擎的重要组成部分。爆炸性增长的 互联网要求搜索引擎必须要有一个高效的网络爬虫程序,它需要具备高效的爬 取策略和高度优化的系统架构。网络爬虫可以应用于多种场景,包括广度优先 爬虫、数据更新爬虫、聚焦爬虫、深网爬虫以及取样爬虫等。 网络爬虫的调度策略决定着它的效率,白其诞生以来,已经有无数的专家 学者致力于爬虫的调度算法的研究,并发表了诸多优秀的成果。这些优秀的调 度算法包括:广度优先爬取、导入链接计数、批量p a g e r a n k 、部分p a g e r a n k 以 及在线页面权重计算等。现实中的网络爬虫并不是单独使用某一种调度算法的, 而是同时实现多重策略,这样才能保证其高效。除了调度策略,网络爬虫还需 要很多必需模块,比如网页编码探测、h t m l 解析和分词等模块,这些模块在 爬虫的各个处理流程中起到了重要的作用。 s c r a p y 爬虫框架是一套纯p y t h o n 实现的,基于t w i s t e d 异步处理框架开发 的网页抓取框架,它具备简单、快速、高效、扩展性好和稳定性好等特点。它 包含引擎、调度器、蜘蛛、数据处理流水线、下载器以及各种中间件,这些模 块和中间件各司其职,在程序运行期间依靠t w i s t e d 的异步机制互相通信、精密 合作。开发人员只需要简单的定制蜘蛛模块和数据处理流水线就可以实现一个 简单的爬虫,开发效率很高。 第三章新闻实时抓取系统 第三章新闻实时抓取系统 新闻爬虫是典型的聚焦爬虫,新闻信息的特殊性决定了新闻爬虫鲜明的抓 取特点。新闻爬虫抓取网页量大,实时性要求很高。要想实现性能较为优秀的 新闻爬虫需要有很好的调度策略和大规模数据抓取的能力。显然,在海量互联 网数据面前,单机的爬取早已经不能满足实时性的需求,必须依赖于分布式系 统的力量。论文基于s c r a p y 框架做深度定制,设计了一套分布式的新闻实时抓 取系统。 第一节新闻爬虫的特点 新闻爬虫不同于传统的网络爬虫,它有着特定的抓取需求,其目标站点是 已知的,站点所需要爬取的页面也是已知的,并不需要通用爬虫里面的链接分 析和站点发现等特性。它首要解决的问题是实时性。相比于全网网络爬虫,新 闻爬虫有如下特点: 1 实时性 新闻本身的时效性的特点决定了新闻爬虫爬取的实时性。当一条新闻发布 数小时后,再爬取到该条新闻的意义已经不大,新闻爬虫应该要做到在新闻发 布之后的数分钟内发现该条新闻并成功爬取。 2 明确的爬取目标 全网爬虫的任务是爬取互联网所有能被爬取的页面,它的爬取目标广泛, 包含各种主题的网页,而新闻爬虫只需要侣取发布新闻的网页,爬取目标很明 确。由于互联网上的新闻站点数量有限,新闻爬虫能够较为专注的爬取。 3 明确的数据抽取字段 全网爬虫会收录各种类型的网页和数据,并没有对网页数据有一个统一的 要求,而新闻爬虫只需要抽取跟新闻有关的属性,比如:标题、发表时间和正 文等内容,数据字段和格式比较明确。 一般情况下,一个新闻爬虫会遇到如下的问题:抓取的网页数量巨大;网 页更新量巨大,新闻页面基本是实时更新的;很多网页都是动态生成的,包含 各种多媒体信息。 1 6 第三章新闻实时抓取系统 海量互联网数据的存在意味着在特定的一段时间内,新闻爬虫只能抓取其 中的一小部分,因此需要区别对待抓取列表里的u r l ,要定义抓取的优先级; 新闻的时效性决定了爬虫必须能在最短的时间内爬取到最新发布的新闻,所以 经常发布新闻的网页的爬取尤为重要,如何保证需要频繁访问新闻发布页面而 不给新闻站点的服务器带来过大压力是爬虫需要注意的地方;现在的网页里包 含着大量动态生成的内容,这些内容大都是由j s 和a j a x 生成的,普通爬虫无 法直接获取这些动态内容,需要有更加智能的爬虫来灵活的应对网页里可能出 现的各种情况。 第二节系统核心算法及整体架构 要实现一个性能优秀的新闻爬虫,需要克服的难点很多。这些难点主要集 中在爬取效率和页面解析等方面。为了很好的解决这些难点,需要弄清楚解决 问题的关
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026国网四川省电力公司高校毕业生提前批招聘笔试参考题库浓缩500题及1套完整答案详解
- 国家管网集团2025届高校毕业生招聘笔试历年参考题库附带答案详解(浓缩500题)及参考答案详解(研优卷)
- 2026秋季国家管网集团山东分公司高校毕业生招聘考试备考试题(浓缩500题)含答案详解(典型题)
- 2026国家管网集团广西公司秋季高校毕业生招聘考试备考试题(浓缩500题)含答案详解(a卷)
- 2025国网宁夏高校毕业生提前批招聘(约450人)笔试模拟试题浓缩500题及完整答案详解1套
- 2026秋季国家管网集团华南公司(广东省管网公司)高校毕业生招聘考试参考题库(浓缩500题)带答案详解(预热题)
- 2025国网江西省高校毕业生提前批招聘(约450人)笔试模拟试题浓缩500题附答案详解(能力提升)
- 2026年鹰潭市农村信用社联合社秋季校园招聘笔试备考题库(浓缩500题)含答案详解(综合卷)
- 2026秋季国家管网集团福建公司高校毕业生招聘考试备考试题(浓缩500题)含答案详解(新)
- 2026国网湖北省高校毕业生提前批招聘(约450人)笔试模拟试题浓缩500题及一套答案详解
- 河道清淤疏浚投标方案(技术方案)
- 自考美学章节练习题
- 研究生学术表达能力培养智慧树知到答案2024年西安建筑科技大学、清华大学、同济大学、山东大学、河北工程大学、《环境工程》英文版和《环境工程》编辑部
- 初中英语趣味竞赛市公开课一等奖省赛课微课金奖课件
- SL-T+712-2021河湖生态环境需水计算规范
- 出口监管仓库货物入仓清单
- 肉桂课件讲解
- MOOC 大学计算机基础-广西大学 中国大学慕课答案
- 耳穴压豆治疗糖尿病
- 机巷回撤皮带机安全技术措施
- 培养小学生有效使用数学草稿本方法的研究
评论
0/150
提交评论