当前位置: 首页 > 专利查询>河海大学专利>正文

基于Spark Streaming的双周期爬虫系统及其运行方法技术方案

技术编号:18913474 阅读:32 留言:0更新日期:2018-09-12 02:56
本发明专利技术公开了一种基于Spark Streaming的双周期爬虫系统及其运行方法,页面下载模块负责下载页面,下载时调用DNS缓存模块里缓存的DNS信息,加速DNS解析以缩短页面下载时长;URL分发调度模块负责调用URL抽取模块,从新下载好的页面中抽取出URL,并调用URL去重模块过滤重复的URL,把URL分发给页面下载模块;页面调度模块负责调用页面分析模块,确定当前页面符合的抽取模型,并将数据抽取任务分发给页面抽取模块,由页面抽取模块从页面里取出数据,存入分布式存储系统中;整个爬虫的参数配置和监控管理均在web后台中控制。本发明专利技术解决了传统爬虫的水平扩展问题,具有模块划分清晰、运行机制稳定高效、爬虫规则配置简洁、通用性强等特点。

Double cycle crawler system based on Spark Streaming and its operation method

The invention discloses a dual-cycle crawler system based on SparkStreaming and its running method. The page download module is responsible for downloading pages, calling the DNS information cached in the DNS cache module when downloading, speeding up DNS parsing to shorten the page download time, and the URL distribution scheduling module is responsible for calling the URL extraction module to download the new DNS information. The page extracts the URL and calls the URL de-duplication module to filter the duplicate URL and distributes the URL to the page download module; the page scheduling module is responsible for calling the page analysis module to determine the extraction model that the current page conforms to, and distributes the data extraction task to the page extraction module, which extracts the data from the page. The parameters configuration and monitoring management of the whole crawler are controlled in the web background. The invention solves the horizontal expansion problem of the traditional crawler, and has the characteristics of clear module division, stable and efficient operation mechanism, concise crawler rule configuration and strong versatility.

【技术实现步骤摘要】
基于SparkStreaming的双周期爬虫系统及其运行方法
本专利技术涉及一种基于SparkStreaming的双周期爬虫系统及其运行方法,属于分布式爬虫

技术介绍
爬虫系统,是对海量分散的互联网数据进行采集的系统,是搜索引擎系统的基础。大数据近年来快速发展,炙手可热,不仅是数据的容量大,更是强调对全样本数据的分析。互联网数据中包含了大量有价值信息,是大数据的重要数据来源,其组织形式也灵活多样,大多数网站采用了动态加载等反爬虫策略,给传统爬虫的信息采集、存储带来了极大的挑战。传统爬虫运行于单一节点上,水平扩展能力差,爬虫线程数量和数据存储容量均有限且不易扩展,此外,传统爬虫往往只能针对单一网站进行数据爬取,通用性差。应大数据时代需求,分布式爬虫应运而生,以分布式存储的形式解决大数据量问题,以多节点、多线程的高度并行化采集提升爬虫工作效率。然而,由于多节点的并行工作,很容易造成工作模块功能重复、进度不同步等问题,急需一种高效的分布式爬虫运行机制,将爬虫工作划分成合理的工作模块并确立各模块的运行秩序,使各模块相互协作,稳定运行,提升分布式爬虫系统的运行效率。
技术实现思路
专利技术目的:针对现有技术中的爬虫系统存在的问题,本专利技术提供一种基于SparkStreaming的双周期爬虫系统及其运行方法,解决了传统爬虫的水平扩展问题,具有模块划分清晰、运行机制稳定高效、爬虫规则配置简洁、通用性强等特点。技术方案:一种基于SparkStreaming的双周期爬虫系统,包括:页面下载模块,DNS缓存模块、URL分发调度模块、URL抽取模块、URL去重模块、页面调度模块、页面分析模块、页面抽取模块、存储系统和web后台。其中,页面下载模块负责下载页面,下载时调用DNS缓存模块里缓存的DNS信息,加速DNS解析以缩短页面下载时长;URL分发调度模块负责调用URL抽取模块,从新下载好的页面中抽取出URL,并调用URL去重模块过滤重复的URL,把URL分发给页面下载模块;页面调度模块负责调用页面分析模块,确定当前页面符合的抽取模型,并将数据抽取任务分发给页面抽取模块,由页面抽取模块从页面里取出数据,存入分布式存储系统中;整个爬虫的参数配置和监控管理均可以在web后台中控制。传统爬虫大多由下载器、调度器、页面分析器、存储器组成,上述模块划分较传统爬虫相比,将调度器细分为URL调度分发模块和页面调度模块,使URL和页面被分开处理,提升爬虫工作并行度;此外,页面下载模块和页面抽取模块可由单个或多个节点、线程构成,配合分布式存储模块设计,使爬虫架构更加适于分布式运行环境,便于爬虫的水平扩展。本分布式爬虫机制利用SparkStreaming的实时性和容错性保证各工作模块的增量处理和进度同步,提出并实现了基于SparkStreaming的双周期爬虫运行机制。该运行机制包括如下步骤:步骤1,爬虫开始运行时,向URL分发调度模块的URL优先队列中放入要爬取电商网站的入口URL,由于优先队列中只有一个URL,该URL会被立即取出并分发给页面下载模块的下载节点,进入下一步;步骤2,下载节点收到待下载的URL,将URL对应的页面完整地渲染下载下来,并存入分布式存储系统HDFS的一个文件夹下,进入下一步;步骤3,URL分发调度模块的监听器发现新的页面,从该页面中提取出所有的URL,统计并分析各URL的域名特征,进入下一步;步骤4,调用URL去重模块对抽取出的URL进行去重处理,去掉已经分发给下载节点的那些URL,避免重复下载,进入下一步;步骤5,将去重后的URL加入URL优先队列中,由URL分发调度模块周期地取出高优先级的URL分发给各个下载节点,基于SparkStreaming的容错性,URL不会被重复分发,进入下一步;步骤6,各下载节点下载好页面后存入HDFS文件夹下,URL分发调度模块的监听器又一次发现新的页面,开始新一轮“链接抽取分发——页面下载”周期,回到步骤3;步骤7,当有新的页面被下载好存入HDFS文件夹下的同时(步骤3的同时),页面调度模块的监听器也能发现这些新增页面,调用页面分析模块分析新页面是否是拥有抽取模型的页面,即是否是用户需要提取数据的页面,用户可以通过预设的页面特征和抽取规则来辅助页面分析器判定详情页类别,若是详情页转步骤8,否则忽略该页面;步骤8,将有抽取模型的详情页放入页面优先级队列中,由页面调度模块周期性地取出高优先级的页面分发给各个页面抽取模块的数据抽取节点,进入下一步;步骤9,各数据抽取节点根据抽取模型里的数据抽取规则,从详情页中抽取出数据,存入HBase中,完成一次“页面分析——数据抽取”周期,每当页面调度模块监听器发现新增页面时,“页面分析——数据抽取”周期都会被自动触发。步骤2所述渲染下载能使下载下来的页面信息尽可能完整,是一种反反爬手段。作为本专利技术的一种优选方案,步骤4和步骤8所述优先队列的优先级可由用户自行定义,比如用户可以定义URL或页面符合某种特征或包含某些信息时优先级最高,保证用户关心的数据能最先获取。作为本专利技术的一种优选方案,上述步骤中涉及的HDFS文件夹监听以及URL和页面的分发调度基于SparkStreaming实现。通过周期监听HDFS文件夹下的文件变动或端口接收信息的变动,获取新消息和新数据;由于监听周期时间非常短,几乎和实时流处理无异,保证了数据处理的实时性和无重复性;获得增量的消息或数据后,将数据进一步转化成多个RDD(弹性分布式数据集),以微批处理的形式,均衡负载地分发给各个节点,从而实现了分布式爬虫的调度分发功能;处理RDD失败会进行重做,进而提升爬虫容错性。作为本专利技术的一种优选方案,上述步骤中涉及的页面下载模块包括一个或多个下载节点,每个下载节点包括一个或多个下载线程。作为本专利技术的一种优选方案,上述步骤中涉及的页面抽取模块包括一个或多个数据抽取节点,每个数据抽取节点包括一个或多个数据抽取线程;作为本专利技术的一种优选方案,上述步骤中涉及的存储系统由HDFS、HBase和Redis组成,保证各节点数据的共享性和一致性。有益效果:传统单机爬虫的下载线程数量和存储容量均有限且不易扩展,本分布式爬虫水平扩展能力强,下载节点和数据抽取节点可以自由扩展;利用SparkStreaming的容错性和增量性,使爬虫各模块工作有序,运行稳定;URL和页面优先队列的优先级自定义,抽取模型自定义,保证用户关心的数据最先获取,爬虫通用性强,通过简单的配置即可适用于不同的网站;页面下载模块采用DNS缓存减少页面下载时长,以及基于多反反爬策略的页面渲染反爬机制提升数据获取成功率;URL去重模块采用低内存URL快速去重算法,减少重复工作,提升爬虫工作效率。“链接抽取分发——页面下载”周期和“页面分析——数据抽取”周期组成的双周期机制将爬虫的工作分开并独立出来,使两个相互独立的工作周期并行执行;“链接抽取分发——页面下载”周期的URL优先级队列以及“页面分析——数据抽取”周期的页面优先级队列使各周期对URL或页面的处理以流水线的工作形式执行,各周期内部也是高度并行工作的。因此,本分布式爬虫机制使各模块的工作流程高度并行化。附图说明图1为本专利技术实施例的系统架构图;图2为本专利技术实施例基于SparkStr本文档来自技高网...

【技术保护点】
1.一种基于Spark Streaming的双周期爬虫系统,其特征在于,包括:页面下载模块,DNS缓存模块、URL分发调度模块、URL抽取模块、URL去重模块、页面调度模块、页面分析模块、页面抽取模块、存储系统和web后台;其中,页面下载模块负责下载页面,下载时调用DNS缓存模块里缓存的DNS信息,加速DNS解析以缩短页面下载时长;URL分发调度模块负责调用URL抽取模块,从新下载好的页面中抽取出URL,并调用URL去重模块过滤重复的URL,把URL分发给页面下载模块;页面调度模块负责调用页面分析模块,确定当前页面符合的抽取模型,并将数据抽取任务分发给页面抽取模块,由页面抽取模块从页面里取出数据,存入分布式存储系统中;整个爬虫的参数配置和监控管理均在web后台中控制。

【技术特征摘要】
1.一种基于SparkStreaming的双周期爬虫系统,其特征在于,包括:页面下载模块,DNS缓存模块、URL分发调度模块、URL抽取模块、URL去重模块、页面调度模块、页面分析模块、页面抽取模块、存储系统和web后台;其中,页面下载模块负责下载页面,下载时调用DNS缓存模块里缓存的DNS信息,加速DNS解析以缩短页面下载时长;URL分发调度模块负责调用URL抽取模块,从新下载好的页面中抽取出URL,并调用URL去重模块过滤重复的URL,把URL分发给页面下载模块;页面调度模块负责调用页面分析模块,确定当前页面符合的抽取模型,并将数据抽取任务分发给页面抽取模块,由页面抽取模块从页面里取出数据,存入分布式存储系统中;整个爬虫的参数配置和监控管理均在web后台中控制。2.如权利要求1所述的基于SparkStreaming的双周期爬虫系统,其特征在于,页面下载模块采用基于多反反爬策略的页面渲染反扒机制,具体包括渲染下载和出错处理:出错处理部分,对于下载出错的页面,下载状态机会自动添加Cookie并更换IP再次重启下载,同一URL默认的重启下载次数为3次。3.如权利要求1所述的基于SparkStreaming的双周期爬虫系统,其特征在于,DNS缓存模块负责对解析过的DNS信息进行管理,采用JVMDNS缓存和Redis数据库结合的形式,存储下有效的DNS解析信息,及时更新DNS解析结果的有效期限;DNS解析时,先在JVMDNS缓存中查找,如果没有再进入Redis数据库中查找,形成DNS二级缓存。4.如权利要求1所述的基于SparkStreaming的双周期爬虫系统,其特征在于,URL抽取模块的负责从HTML中抽取出<a>标签下的URL,将URL转化为绝对路径,并采用域名分析方法进行归类,根据用户自定义的URL优先级进行选择,抽取出相应的URL;URL去重模块采用键值对数据库Redis和布隆过滤器双重过滤机制,第一层为布隆过滤器,第二层为Redis数据库;为了进一步降低URL去重的内存使用,不直接在BloomFilter和Redis中存储URL本身,而是存储了URL对应的MD5码,既保证了URL的正确去重,又使Key值不至于过长占用太多内存,影响去重效率。5.如权利要求1所述的基于SparkStreaming的双周期爬虫系统,其特征在于,URL分发调度模块调用URL抽取模块,从HTML页面中取出URL,再调用URL去重模块,留下需要下载HTML页面的URL,并将其加入URL优先级队列中,URL优先级队列根据用户设定的URL优先级规则,将URL按照优先级排序,保证用户最关心的HTML页面被最先下载;页面调度模块调用页面分析模块,获得对应页面的抽取模型,将页面及其抽取模型加入页面优先级队列中,页面优先级队列根据用户设定的页面优先级规则,将HTML页面按照优先级排序,保证用户最关心的数据被最先抽取;URL分发调度模块和页面调度模块负责以高优先级先出队的...

【专利技术属性】
技术研发人员:连晓颖张雪洁王乐进王睿朱云
申请(专利权)人:河海大学
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1