本发明专利技术公开了一种基于scrapy爬虫框架的数据采集系统及方法,包括:爬虫队列模块和爬虫执行模块;爬虫队列模块包括爬虫种子队列、爬虫种子处理单元和爬虫任务队列;爬虫种子队列用于存储爬虫任务;爬虫种子处理单元用于对爬虫种子队列中的爬虫任务进行去重筛选处理,并将去重筛选后的爬虫任务存储入爬虫任务队列;爬虫执行模块包括网页下载单元和URL挖掘单元;网页下载单元用于从爬虫任务队列中读取当前需要执行的爬虫任务,基于读取到的爬虫任务下载网页;URL挖掘单元用于在下载到的网页中提取到新的URL链接作为新的爬虫任务存入爬虫种子队列;实现对特定领域网站域名的深度挖掘,提升了系统的爬取广度。
Data acquisition system and method based on the framework of crawler
【技术实现步骤摘要】
基于scrapy爬虫框架的数据采集系统及方法
本专利技术属于数据采集
,具体地说,是涉及一种基于scrapy爬虫框架的数据采集系统及方法。
技术介绍
信息网络技术的快速发展,带来了网络信息量的指数性增长。在网络信息资源充足的条件下,为了快速、针对性获取相关网络信息,促使了搜索引擎的诞生。搜索引擎,是指运用特定的计算机程序按照一定的策略自动从因特网上搜集信息,对信息进行组织和处理以后,提供给用户检索服务。搜索引擎从因特网上搜集信息的过程,依赖于网络蜘蛛对相关网站信息的爬取。网络蜘蛛是一种自动浏览网络,分析网页内容的程序,是搜索引擎的重要组成部分。Scrapy是目前最主流的爬虫框架,它是基于twisted(用Python实现的基于事件驱动的网络引擎框架)异步网络库实现的,在爬取速度上相对其他爬虫是高效的,且具有可定制性。由于网络爬虫对I/O的要求较高,Scrapy将待爬取的URLs直接存储在内存中而非硬盘中,这样一来,在爬取网页过程中,当爬取的网页数量达到数万时,需要存储的URLs数量可能会超过百万甚至千万,再加上Python(一种解释型、面向对象、动态数据类型的高级程序设计语言)本身是脚本语言,其对象占用内存往往比C/C++等编译型语言要大得多,而且Python垃圾收集器的释放内存算法并不会在对象不再被引用时立即释放内存。因此,很可能会导致单机内存枯竭,造成爬取速度变慢。
技术实现思路
本专利技术的目的在于提供一种基于scrapy爬虫框架的数据采集系统及方法,克服现有爬虫框架数据采集方式的不足,提升了爬取效率、爬取稳定性和爬取广度。本专利技术采用以下技术方案予以实现:提出一种基于scrapy爬虫框架的数据采集系统,包括:爬虫队列模块,包括爬虫种子队列、爬虫种子处理单元和爬虫任务队列;所述爬虫种子队列,用于存储爬虫任务;所述爬虫种子处理单元,用于对爬虫种子队列中的爬虫任务进行去重筛选处理,并将去重筛选后的爬虫任务存储入爬虫任务队列;爬虫执行模块,包括网页下载单元和URL挖掘单元;所述网页下载单元,用于从爬虫任务队列中读取当前需要执行的爬虫任务,基于读取到的爬虫任务下载网页;所述URL挖掘单元,用于在下载到的网页中提取到新的URL链接作为新的爬虫任务存入所述爬虫种子队列。进一步的,所述系统还包括:任务调度模块,包括爬虫进程队列和进程管理器;其中,所述进程管理器,用于根据控制信息和爬虫任务队列信息创建爬虫进程,将创建的爬虫进程加入所述爬虫进程队列并进行管理,以及控制所述网页下载单元下载网页;所述爬虫进程队列,用于存储当前正在执行、暂时挂起和已经结束的爬虫进程。进一步的,所述系统还包括:Kafka消息库,用于存储所述爬虫种子队列。进一步的,所述系统还包括:Redis数据库,用于存储所述爬虫任务队列。进一步的,所述系统还包括:MongoDB数据库,用于存储所述网页下载单元下载的网页内容。进一步的,所述爬虫种子处理单元包括:去重插件,用于将所述URL挖掘单元得到的新的爬虫种子与所述爬虫任务队列中的爬虫队列进行判重处理,得到未被爬取过的爬虫种子;筛选插件,用于根据筛选标准对爬虫种子进行匹配筛选。进一步的,所述网页下载单元还用于:重写scrapy的下载组件,实现通过代理vpn下载网页;所述URL挖掘单元,还用于重写scrapy的spider组件,实现提取网站网页的网址链接;将提取到的网址链接存入所述爬虫种子队列。进一步的,所述系统还包括:爬虫管理器,基于HTTP并使用TwistedApplication框架实现,部署在所述爬虫队列模块、所述爬虫执行模块和所述任务调度模块,使得所述爬虫队列模块、所述爬虫执行模块和所述任务调度模块之间通过调用Twisted框架内部的TimerService接口通信。提出一种基于scrapy爬虫框架的数据采集方法,包括:步骤1)读取爬虫种子队列中的爬虫任务;步骤2)将爬虫种子队列中的爬虫任务进行去重筛选,并将去重筛选后的爬虫任务存储入爬虫任务队列;步骤3)从爬虫任务队列中读取当前需要执行的爬虫任务,基于爬虫任务下载网页;步骤4)从下载得到的网页中提取到新的URL连接作为新的爬虫任务存入所述爬虫种子队列;步骤5)重复步骤1)至步骤4),直到所述爬虫种子队列和所述爬虫任务队列为空。进一步的,在步骤1)之前,所述方法还包括:将所需爬取的网站域名、可能存在所需爬取网址URL的网站域名存入所述爬虫种子队列中。与现有技术相比,本专利技术的优点和积极效果是:本专利技术提出的基于scrapy爬虫框架的数据采集系统及方法中,爬虫执行模块在下载的网页中提取新的URL链接作为新的爬虫任务存入创建的爬虫种子队列中,对爬虫种子队列中的爬虫任务进行去重筛选后存入爬虫任务队列,爬虫执行模块再从爬虫任务队列中读取爬虫任务,继续进行下载、去重和筛选,如此重复直至爬虫虫子队列和爬虫任务队列为空,实现对特定领域网站域名的深度挖掘,达到大量获取、下载以及存储相关网页内容的目的,适用于规模大、相关度高的网页内容资源挖掘任务,提升了系统的爬取广度;同时,对爬虫种子队列中的爬虫任务进行去重和筛选,降低了处理操作的复杂度和所需时间,提升了系统的爬取效率。进一步的,本系统将爬虫种子队列存储于kafka消息库,由于kafka具有可持久性,当中心节点宕机的情况下,也不会丢失带爬取的任务,保证了系统的可靠性,提升了系统的爬取稳定性。进一步的,本系统将爬虫任务队列存储于Redis内存型数据库中,替代了scrapy框架原有在本地内存上创建任务队列存储,实现多个不同机器上的scrapy都可以从一个数据库获取任务进行分布式爬取,进一步提升了系统的爬取效率。结合附图阅读本专利技术实施方式的详细描述后,本专利技术的其他特点和优点将变得更加清楚。附图说明图1为本专利技术提出的基于scrapy爬虫框架的数据采集系统的架构图;图2为本专利技术提出的基于scrapy爬虫框架的数据采集方法的流程图。具体实施方式下面结合附图对本专利技术的具体实施方式作进一步详细的说明。本专利技术提出的基于scrapy爬虫框架的数据采集系统,如图1所示,包括爬虫队列模块1、爬虫执行模块2和任务调度模块3;其中,爬虫队列模块1包括爬虫种子队列11、爬虫种子处理单元12和爬虫任务队列13;爬虫执行模块2包括网页下载单元21和URL挖掘单元22;任务调度模块3包括爬虫进程队列31和进程管理器32。爬虫种子队列11用于存储爬虫任务,包括但不限定于用户发出的爬虫任务以及爬虫执行模块2提交的新的爬虫任务;爬虫种子处理单元12用于对爬虫种子队列中的爬虫任务进行去重筛选处理,并将去重筛选后的爬虫任务存储入爬虫任务队列13中;爬虫任务队列13中的爬虫任务需要提交给进程管理器32。网页下载单元21用于从爬虫任务队列中读取当前需要执行的爬虫任务,基于读取到的爬虫任务下载网页;URL挖掘单元22用于在下载到的网页中提取到新的URL链接作为新的爬虫任务存入爬虫种子队本文档来自技高网...
【技术保护点】
1.一种基于scrapy爬虫框架的数据采集系统,其特征在于,包括:/n爬虫队列模块,包括爬虫种子队列、爬虫种子处理单元和爬虫任务队列;所述爬虫种子队列,用于存储爬虫任务;所述爬虫种子处理单元,用于对爬虫种子队列中的爬虫任务进行去重筛选处理,并将去重筛选后的爬虫任务存储入爬虫任务队列;/n爬虫执行模块,包括网页下载单元和URL挖掘单元;所述网页下载单元,用于从爬虫任务队列中读取当前需要执行的爬虫任务,基于读取到的爬虫任务下载网页;所述URL挖掘单元,用于在下载到的网页中提取到新的URL链接作为新的爬虫任务存入所述爬虫种子队列。/n
【技术特征摘要】
1.一种基于scrapy爬虫框架的数据采集系统,其特征在于,包括:
爬虫队列模块,包括爬虫种子队列、爬虫种子处理单元和爬虫任务队列;所述爬虫种子队列,用于存储爬虫任务;所述爬虫种子处理单元,用于对爬虫种子队列中的爬虫任务进行去重筛选处理,并将去重筛选后的爬虫任务存储入爬虫任务队列;
爬虫执行模块,包括网页下载单元和URL挖掘单元;所述网页下载单元,用于从爬虫任务队列中读取当前需要执行的爬虫任务,基于读取到的爬虫任务下载网页;所述URL挖掘单元,用于在下载到的网页中提取到新的URL链接作为新的爬虫任务存入所述爬虫种子队列。
2.根据权利要求1所述的基于scrapy爬虫框架的数据采集系统,其特征在于,所述系统还包括:
任务调度模块,包括爬虫进程队列和进程管理器;
其中,所述进程管理器,用于根据控制信息和爬虫任务队列信息创建爬虫进程,将创建的爬虫进程加入所述爬虫进程队列并进行管理,以及控制所述网页下载单元下载网页;所述爬虫进程队列,用于存储当前正在执行、暂时挂起和已经结束的爬虫进程。
3.根据权利要求1所述的基于scrapy爬虫框架的数据采集系统,其特征在于,所述系统还包括:
Kafka消息库,用于存储所述爬虫种子队列。
4.根据权利要求1所述的基于scrapy爬虫框架的数据采集系统,其特征在于,所述系统还包括:
Redis数据库,用于存储所述爬虫任务队列。
5.根据权利要求1所述的基于scrapy爬虫框架的数据采集系统,其特征在于,所述系统还包括:
MongoDB数据库,用于存储所述网页下载单元下载的网页内容。
6.根据权利要求1所述的基于scrapy爬虫框架的数据采集系统,其特征在于,所述爬虫种子处理单元包括:
去重...
【专利技术属性】
技术研发人员:魏志强,贾东宁,聂为之,刘安安,苏育挺,
申请(专利权)人:青岛海洋科学与技术国家实验室发展中心,
类型:发明
国别省市:山东;37
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。