互联网数据采集系统的设计与实现
摘要:针对目前互联网上的数据信息涉及网站多、数据量大、数据复杂、数据标准不统一等问题。通过采用分布式数据库和支撑服务组件等技术,设计建设一套互联网信息采集管理系统,实现对互联网上相关的数据快速采集和生产标准格式数据的目标。
1、概述
全球互联网步入泛在普及、深度融合、变革创新、引领转型的新阶段,根据国际数据公司的统计和预测,全球数据存储量将由2015年的10ZB增长到2020年的44ZB,进入万物互联时代数据存储量呈现指数级增长,各类新闻媒体、信息检索、社区论坛、商务金融、学习教育等多样化数据资源已经遍布于互联网的各个角落,互联网已经成为了一个庞大的数据资源池。因此,无论是政务机构、企事业单位甚至是个人,已经逐渐的将互联网数据资源作为辅助完成项目建设、业务工作、科学研究的重要数据来源之一。所以,有必要建立一套互联网数据采集系统,解决互联网数据采集问题,丰富中心大数据来源,为政府决策、行业管理以及公众提供更好的信息服务。
2、系统总体设计
本系统具体包括互联网信息感知系统,分布式数据库和支撑服务组件。
(1) 互联网信息感知系统
互联网信息感知系统包含三个子系统,分别是后台管理子系统、爬虫容器子系统、存储容器子系统。其中后台管理子系统主要实现数据统计分析、爬虫任务管理、爬虫模板管理、爬虫程序管理、爬虫配置管理、用户管理、角管理、菜单管理、字典管理等功能。爬虫容器子系统主要实现爬虫的任务管理,包括创建爬虫任务、启动任务、部署任务、停止任务等功能。存储容器子系统主要实现了数据分析处理、数据排重处理、数据格式化处理等功能。
劳动节手抄报内容资料(2) 互联网信息感知系统数据库
互联网信息感知系统数据库包含两个主要数据库,分别是管理平台数据库、采集数据平台存储数据库。其中管理平台数据库存储了整个系统正常运行的系统数据的管理平台数据库,包括爬虫任务、爬虫程序、爬虫配置、用户、角、字典等系统基础数据。采集数据平台存储了通过互联网相关网站采集获取的数据。
乌云然歌词(3) 支撑服务建设
支撑服务包含消息队列、Zookeeper注册中心、FTP服务器。其中消息队列用于解耦爬虫任务和数据库的存取关系,并可降低对数据库的存储压力。注册中心用于获取爬虫容器和爬虫任务的运行状态,便于服务治理。FTP服务存储爬虫任务爬取的图片数据。
系统采用分层架构设计,包括6层,即基础层、数据层、业务层、支撑层、应用管理层和展现层。
上海政法大学
图1总体架构设计
(1) 基础层浙江温州的区号
基础层由网络设备,存储设备和安全设备等系统所需的基础环境组成。
(2) 数据层
数据层由Mysql数据库组成,主要分为信息采集平台数据库和爬虫数据库,分别存储基础数据和爬取的业务数据。
(3) 业务层
业务层主要包含接口服务和存储服务,后端管理系统通过接口方式调用和同步对存储服务和爬虫的进行相应的操作。
(4) 支撑层
本系统的支撑层主要包含Zookeeper注册中心、RocketMQ消息队列和FTP文件存储服务器。
Zookeeper协调管理爬虫容器和数据处理容器,Zookeeper检测爬虫任务和爬虫服务的存活状态,并实时通知信息采集管理平台,提供选择爬虫服务的依据。
人人都是EDG什么梗RocketMQ对爬虫服务和数据库进行解耦,缓存爬虫服务抓取的数据,降低存储数据的并发度,提高数据的横向扩充能力,解除数据写入带来的数据抓取限制。
FTP文件存储服务器存贮爬虫程序抓取的静态文件包括不限于抓取的Css、Html、Js、Image、Video等文件。
(5) 应用层
系统的应用层,采用Java 语言开发,使用基于Spring集成的SSM框架,实现的主要业务有和数据库的数据交互,任务调度,任务分配和爬虫服务的接口通信、和支撑服务的业务通信。由任务管理、模板管理、系统管理、爬虫管理等组成。
(6) 展现层
展现层面向操作用户,使用Element-ui2.5框架,Vue2.6。和业务层通过接口实现数据交换,主要实现了任务管理、模板管理、容器管理、数据看板、查询统计、系统设置等功能。
3、系统具体实现
3.1 采用selenium爬取动态网页
动态页面的生成有很多种,常见的有两种:一种是直接通过Ajax返回的数据来显示.对于这种,我们可以直接通过分析Ajax的接口来使用requests或者urllib等包直接来获取接口传输的数据,另外一种是返回的数据在页面上再进行加工后才显示的数据,这种数据往往是通过js进行各种复杂的计算得到的也是一种很常见的加密方式,通过requests并不能直接获取。
针对第一种我们直接可以使用调用接口的方式获取,但是通过前端js加密的数据如何获取,当然我们可以直接分析他们的js来读懂整个网站的js但是这需要很大的功夫去了解一个网站,对于一个大型网站可能网站的人员都不一定能全部理解整个网站的js加密方式。针对该种方式的动态网页,我们使用一款自动化测试工具selenium来解决。
使用selenium能够对动态网页进行渲染,并模拟人为的点击下拉等操作,对于加密的Js或者复杂请求的渲染界面的应对措施。
3.2 多级数据动态下钻
对于爬虫爬取的网络数据有时候往往不是一类数据,很有可能是父子表数据,或者更多界别的数据,例如:爬取的房屋数据中就包含了楼盘-楼栋-房间信息,对于此类数据,如何很好的存储比较关键。
系统使用通过编写相关程序和实现,使用简单的配置,通过配置配置文件中字段的父子关系,直接生成父子表,并通过页面直接点击该列字段,展现子表数据。关锦鹏批评伊能静
3.3 分布式网络爬虫技术
分布式网络爬虫就是基于聚焦爬虫的分布式实现方式,主要使用以下组件实现分布式实现:
Redis:分布式的Key-Value数据库,用作存储已经爬取的URL仓库。
Zookeeper:分布式协调组件,用于对分布式爬虫容器的管理,由于Zookeeper支持多台部署,下图中2台Zookeeper可自主选举,数据和状态实时同步。
RocketMQ:消息中间件,用于存储待爬取的URL和爬取下来的数据,并提供给存储容器消费数据。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论