李曉煬
摘? ?要:人們對業務運行質量與效率的要求越來越高,監控產品多樣化的趨勢越來越大,包含的系統越來越多。因此,將眾多相互獨立卻又有內在聯系的各個子系統統一管理,將是監控平臺的發展方向。氣象綜合業務實時監控系統的建設,有利于建立集中管理的氣象綜合業務實時監控和展示平臺,推動氣象業務綜合化、集約化發展,有利于提高業務、管理的現代化和信息化水平。為構建一體化、可視化、開放的氣象綜合業務實時監控系統接入第三方數據,文章提供了基于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