APP下载

Scrapy在气象综合业务实时监控系统中获取第三方数据的应用

2019-01-06李晓炀

无线互联科技 2019年21期
关键词:爬虫

李晓炀

摘   要:人们对业务运行质量与效率的要求越来越高,监控产品多样化的趋势越来越大,包含的系统越来越多。因此,将众多相互独立却又有内在联系的各个子系统统一管理,将是监控平台的发展方向。气象综合业务实时监控系统的建设,有利于建立集中管理的气象综合业务实时监控和展示平台,推动气象业务综合化、集约化发展,有利于提高业务、管理的现代化和信息化水平。为构建一体化、可视化、开放的气象综合业务实时监控系统接入第三方数据,文章提供了基于Scrapy框架的信息提取,实现集中监控、告警、运维一体化,提高业务运维保障能力。

关键词:气象综合业务;实时监控系统;Scrapy;爬虫

1    气象综合业务实时监控系统介绍

气象综合业务实时监控系统是基于气象业务监控系统的现状,详细剖析了现有监控系统存在的问题和发展需求,通过调研国内外相关行业监控系统设计,结合气象信息化和业务现代化的目标,提出气象综合业务实时监控系统设计思路。采用大数据、云计算技术建立开放、高效、可扩展的监控系统框架,通过规范化的监視信息采集和控制接口,接入观测、信息、预报、服务和政务管理等气象业务“全流程、全要素、全过程”的监视信息,实现对气象综合业务的实时监视和控制[1]。

现有业务多为独立建设,数据交换和共享困难,使用和维护个性化,各系统数据存储形式各异,查看不同的数据需要登录不同的系统。气象综合业务实时监控提供了基础资源监控信息接入接口,对于不提供应用程序编程接口(Application Programming Interface,API)或者其他可编程访问机制的应用,可通过Scrapy获取基础资源的监控信息,并由接口接入综合业务实时监控,实现资源统一采集与存储、运行监控等功能。

2    Scrapy的概念和内涵

Scrapy是Python开发的一个快速、高层次的屏幕抓取和Web抓取框架,提供了多种类型爬虫的基类,用于抓取Web站点并从页面中提取结构化的数据。底层为异步框架 twisted,具有并发的优势。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。

Scrapy框架主要由5大组件组成,分别是调度器(Scheduler)、下载器(Downloader)、爬虫(Spider)和管道(Item Pipeline)、Scrapy引擎(Scrapy Engine)。调度器负责调度抓取网页的网址或链接,具有去重功能,避免重复作业;下载器是建立在twisted高效的异步模型上,用于高速地下载网络上的资源;爬虫由用户自己定义,用于从特定的网页提取自己需要的信息或者获取需要进一步分析的网页;管道用于处理爬虫提取的实体,可持久化实体、验证实体的有效性和清除不需要的信息;Scrapy引擎是整个框架的核心,用来控制调试器、下载器、爬虫。

对于数据量较大的站点,可使用基于redis数据库的组件scrapy-redis,启动多个spider工程,相互之间共享单个redis的request队列,实现项目的分布式开发和部署。

3    数据提取应用

3.1  第三方数据接入分析

气象综合业务实时监控系统接入基础资源信息需要提交资源数据、性能数据以及状态数据。对于将要接入的第三方数据,首先需要确认获取信息的资源,再根据资源的性能值与状态值创建合适且唯一的性能模型编码及状态模型编码。性能模型与状态模型对于不同的资源可以复用,但在传入综合业务实时监控系统性能值与状态值时需对应指定资源的object值,资源的object值为提交资源数据时返回的item值。测试模型创建与数据接入时可以使用Postman软件发起GET及POST请求。

Scrapy获取数据前需要先对第三方应用的页面进行分析。Fiddler等Web抓包软件可以记录客户端和服务器之间的所有请求,可以针对特定的请求,分析请求数据、设置断点、调试Web应用、修改请求的数据。通过Web调试分析,获取到相关的请求方式及地址后即可模拟浏览器发起请求,并对第三方应用的响应进行处理,提取需要获取的数据[2]。

以接入性能数据为例,metric为创建的性能模型编码,object为提交的资源,value则为使用Scrapy获取的具体性能值,状态数据的接入与性能数据的接入一致。气象综合业务实时监控系统接口接受POST请求的body体默认为json格式,因此在使用Scrapy获取到的数据需要生成json格式的数据落地保存或者直接调用接口传入气象综合业务实时监控系统。

3.2  应用

3.2.1  系统登录

Scrapy的基本请求流程是调用start_request方法遍历start_urls列表。对于需要登录的系统,Scrapy需要重写start_requests方法GET登录页面的信息。获取到登录页面的登录信息后,用callback参数指定接下来执行的登录方法,使用POST方法将用户名、密码等formdata传给系统即可实现登录。发起请求的header信息可以指定为浏览器的实际访问header。

验证登录成功后,Scrapy可带着登录成功后Cookie值,访问需要被爬取数据的地址。

3.2.2  数据提取

start_urls列表为Scrapy默认爬取数据的地址列表,并将获取的响应传给parse方法。该列表可由用户根据需列出被爬取的页面使用Spider类去获取响应,也可调用CrawlSpider类根据链接的变化规则去自动分析获取链接。为避免超出爬取范围,需指定allowed_domains。对于已经爬取过的页面,可设置dont_filter参数进行去重。

在獲取的响应页面中,使用正则或者xpath等方法分析匹配需要获取的值。在完成一个页面的数据提取后,调用callback方法重新发送下一页面的请求。

3.2.3  数据处理

在获取到的数据中,可能存在与实际需求不符的数据,例如编码及存在其他字符等问题,此时可以使用Scrapy框架中的Pipeline对数据进行处理。调用的Pipeline需要在Scrapy项目对应的settings.py文件中进行设置。

数据处理完成后,即可按照接入气象综合业务实时监控系统的规则,保存为指定的json格式调用接口进行接入。

4    结语

Scrapy框架具有高并发、代码简单等优势,气象综合业务实时监控系统使用该框架可高效、方便地接入第三方应用数据,实现资源的统一采集与存储、运行监控等功能,构建一体化、可视化、开放的监控系统,推动气象业务综合化、集约化发展,提高业务、管理的现代化和信息化水平。

[参考文献]

[1]孙超,肖文名,陈永涛,等.气象综合业务实时监控系统的设计[J].气象科技进展,2018(1):153-157.

[2]崔庆才.Python3网络爬虫开发实战[M].北京:人民邮电出版社,2018.

Application of Scrapy in obtaining third party data in meteorological

integrated service real-time monitoring system

Li Xiaoyang

(Inner Mongolia Autonomous Region Meteorological Information Center, Hohhot 010000, China)

Abstract:People have the higher and higher requirements for the quality and efficiency of business operation, the trend of monitoring product diversification is becoming greater and greater, including more and more systems. Therefore, the unified management of many independent but internally related subsystems will be the development direction of the monitoring platform. The construction of real-time monitoring system for meteorological integrated business is beneficial to the establishment of centralized management platform for real-time monitoring and display of meteorological integrated business, the promotion of integrated and intensive development of meteorological business, and the improvement of the modernization and information level of business and management. In order to build an integrated, visual and open meteorological integrated service real-time monitoring system access third party data, this paper provides information extraction based on Scrapy framework to achieve centralized monitoring, alarm, operation and maintenance integration, improve business operation and maintenance support ability.

Key words:meteorological integrated business; real-time monitoring system; Scrapy; crawler

猜你喜欢

爬虫
利用网络爬虫技术验证房地产灰犀牛之说
基于Python的网络爬虫和反爬虫技术研究
善用网络爬虫
基于Django 的分布式爬虫框架设计与实现*
目前互联网中的网络爬虫的原理和影响
网络爬虫技术原理
谁抢走了低价机票
利用爬虫技术的Geo-Gnutel la VANET流量采集
大数据背景下校园舆情的爬虫应用研究
大数据环境下基于python的网络爬虫技术