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去重模块、页面 ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。