999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Golang的地震數據共享平臺Crawlab爬蟲框架的實現

2020-07-09 22:13:09黃詩涵韋廷岳靳一飛黃猛
現代信息科技 2020年2期

黃詩涵 韋廷岳 靳一飛 黃猛

摘? 要:網絡技術快速發展,信息資源多種多樣,面對具有范圍廣、信息量大等特點的地震數據共享平臺,如何快速又準確地抓取有用的相關信息十分重要,因此爬蟲為該地震數據共享平臺的重要技術之一。構建使用Docker部署的基于Golang的Crawlab的爬蟲框架進行數據爬取及數據處理的地震數據共享平臺,解決傳統爬蟲技術在面對龐大數據量時會出現的效率低下問題。

關鍵詞:地震數據;地震數據共享;Golang;Docker;數據處理

中圖分類號:TP391.3;P315.69? ? ? ?文獻標識碼:A 文章編號:2096-4706(2020)02-0028-02

Abstract:With the rapid development of network technology and a variety of information resources,the seismic data sharing platform with wide range and large amount of information is facing,it is very important to grasp useful information quickly and accurately in the face of the seismic data sharing platform with wide range and large amount of information. Therefore,crawler is one of the important technologies of the seismic data sharing platform. A crawler framework of Crawler based on Golang deployed by Docker is constructed to share seismic data for data crawling and data processing,so as to solve the inefficient problem of traditional crawler technology in the face of huge data volume.

Keywords:seismic data;seismic data sharing;Golang;Docker;data processing

0? 引? 言

由于地震數據涵蓋內容多、范圍廣、動態性強、數據量大等特點,面向地震數據共享,我們要構建一個覆蓋面廣泛、動態性強、能夠實時分享地震相關數據功能的地震數據共享平臺。因此該地震數據共享平臺研究中國歷史地震的地理位置分布,分析多震區和少震區地理位置的差異,實現中國歷史地震和斷裂帶在地圖上的展示功能,研究地震后群眾通過各大主流網絡平臺對地震的關注情況。地震數據共享平臺使用爬蟲技術去爬取在發生地震后群眾的關注數據,以及各大主流網站信息的報道情況,使用數據清洗,將相同的數據去重,再對處理后的數據進行數據挖掘,以實現對各主流網站在地震發生時最新發布的地震相關信息的實時動態爬取和分析。

1? 使用爬蟲技術的原因

該地震數據共享平臺要以大量的地震相關數據作為實現技術和功能的基礎,為了實現達到數據量大、動態性強、受眾范圍廣等特點的地震數據共享平臺的構建,需要進行大量的數據挖掘工作,第一步就是獲取基礎信息數據,對多個主流網站進行信息獲取,如與地震有關的地震新聞、地震現場圖片、地震現場視頻以及相關報道等等。有了基礎地震相關數據后,并不能直接使用,而是要進行一系列地震數據處理,將重復、虛假、無用的數據進行剔除,經過重重篩選之后再對剩下的地理數據進行相關分析,分門別類存入不同的數據庫中,方便后期對地理數據的使用。因此需要使用具有多重篩選功能的爬蟲技術去實現網頁內容的部分展示。

2? 選擇基于Golang的Crawlab爬蟲框架的原因

當前熱門的Python語言具有使用簡單、功能強大、語言生態良好等特點,但面對需要大量爬取信息的需求時,Python作為一門腳本語言運行速度慢,為了利用多核,Python開始支持多線程,而解決多線程之間數據完整性和狀態同步最簡單的方法就是加鎖,于是使用了GIL(Global Interpreter Lock),越來越多的代碼庫開發者接受了這種設定后,開始大量依賴這種特性,GIL無疑就是一把全局排他鎖,全局鎖的存在會對多線程的效率有不小影響,甚至使Python幾乎等于一個單線程的程序。為了讓各個線程能夠平均利用CPU時間,Python會計算當前已執行的微代碼數量,達到一定閾值后就強制釋放GIL,而這時也會觸發一次操作系統的線程調度,這種模式在只有一個CPU核心的情況下沒有什么問題,但當CPU有多個核心時就會出現問題。基于GIL的并發模型,其效率不足以滿足該項目的需要,而Golang作為谷歌推出的一門編程語言,具有部署簡單、并發性好、語言設計良好、執行性能好等優勢,且能夠快速編譯,高效執行,易于開發,兼具效率、性能、安全、健壯等特性,所以平臺的構建選擇基于Golang語言的爬蟲調度框架。

由Golang來啟用多個Python進程,克服Python并發效率問題的同時作為網絡爬蟲框架的處理模塊需要有三個:下載器、分析器和條目處理管道,再加上控制模塊,就可以清晰地明白框架的劃分。根據這些,我們可以實現自定義的、自己需要的爬蟲框架的設計。而基于Golang的分布式爬蟲管理平臺,支持多種編程語言,具有配置爬蟲、自動提取字段、上傳爬蟲等功能。該框架主要解決的是大量爬蟲管理困難的問題,例如需要監控上百個網站的項目,不容易做到同時管理,而且成本高且容易出錯,此時該框架可以幫助對所寫爬蟲進行有效的監控管理,成為該地震數據共享平臺的首選。

3? 地震數據共享平臺框架的介紹

該地震數據共享平臺的Crawlab爬蟲框架基于Golang的分布式爬蟲管理平臺,支持Python、Node.js、Go、Java、PHP等多種編程語言。該框架的安裝有三種,第一種是基于Docker部署,第二種是直接部署,第三種是基于Kubernetes部署。這三種部署方式中,本文認為基于Docker部署是比較方便且省時間的部署方式,故使用了Docker部署。

Docker是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的鏡像中,然后發布到任何流行的Linux或Windows機器上,也可以實現虛擬化。容器完全使用沙箱機制,相互之間不會有任何接口。Docker可以利用已存在的鏡像幫助構建一些常用的服務和應用,例如Nginx、MongoDB、Redis等等。用Docker運行一個MongoDB服務僅需docker run-d--name mongo-p 27017:27017 mongo一行命令。也可以使用docker-compose的方式部署,docker-compose是一種集群管理方式,可以利用名為docker-compose.yml的YAML文件來定義需要啟動的容器,可以是單個,但通常是多個的。環境配置是由Go第三方庫viper來實現的。當程序啟動時,viper會去讀取YAML配置文件,以及將環境變量與配置文件中的變量對應起來。

該框架主要包括四部分,分別是:節點、爬蟲、任務、定時任務。節點可以看作是一個服務器,負責執行爬蟲提供API等功能。節點之間是可以相互通信的,節點通信主要通過Redis。該爬蟲框架可以自動部署爬蟲,可以實現每60秒主節點將該節點上的爬蟲文件同步給所有在線節點。在爬蟲文件運行一段時間之后,爬蟲會積累一些統計數據,并將這些指標進行匯總。

該框架的架構包括了一個主節點(Master Node)和多個工作節點(Worker Node),以及負責通信和數據儲存的Redis和MongoDB數據庫。前端應用向主節點請求數據,主節點通過MongoDB和Redis來執行任務派發調度以及部署,工作節點收到任務之后,開始執行爬蟲任務,并將任務結果儲存到MongoDB。主節點是整個Crawlab架構的核心,屬于Crawlab的中控系統。

4? 爬蟲數據處理的實現

在爬取相關數據后,要根據相關地震數據共享平臺對數據的需要,對已有數據進行一系列的數據篩選,剔除掉重復、虛假、無用的數據信息。篩選結束后,再進行自然語言處理,對數據分類聚類,信息檢索過濾,對數據進行清洗,得到符合要求的數據。數據的清洗包括去除無效的數據、整理成規整的格式等等。經過多重數據處理后,還需要采用數據標識,根據數據的類型對處理后的數據分類標注,為實現數據同步,先對全量數據拷貝,然后再采用增量的方式抓取更新時間或者檢查點以后的數據同步更新。經過以上數據處理之后,將爬蟲篩選處理之后的數據進行最后一步操作——插入數據庫,這樣就完成了爬蟲數據相關處理的實現。

5? 結? 論

傳統的搜索雖然能給我們提供很多信息資源,但有時并不能滿足我們對具有范圍廣、量度大等特點的信息資源的獲取,因此需要我們使用爬蟲技術去從多角度獲取所需資源。所以爬蟲技術是本文構建地震數據共享平臺應用的主要技術之一,實現一個基于Golang的Crawlab爬蟲框架的搭建對于整個地震數據共享平臺有著十分重要的作用,其爬蟲框架的實現優劣也直接影響到地震數據共享平臺的性能。

參考文獻:

[1] 詹小艷,許紅梅,朱升初,等.江蘇省地震科學數據共享平臺技術研究 [J].防災科技學院學報,2012,14(1):57-63.

[2] 袁媛,尹京苑.上海地震科學數據共享服務平臺建設 [J].華北地震科學,2014,32(1):16-21.

[3] 高賢康.淺析Docker技術在Web服務系統中的應用 [J].電腦迷,2017(6):55.

[4] 唐曉光.基于訂閱機制的數據共享平臺的研究與設計 [D].大慶:東北石油大學,2013.

[5] 田建勇.基于云計算的Web數據挖掘研究 [J].信息安全與技術,2015,6(4):29-30.

[6] 孫冰.基于Python的多線程網絡爬蟲的設計與實現 [J].網絡安全技術與應用,2018(4): 38-39.

[7] 王靜.面向互聯網輿情分析的海量數據檢索模型關鍵技術研究 [D].北京:首都師范大學,2013.

[8] 孫立偉,何國輝,吳禮發.網絡爬蟲技術的研究 [J].電腦知識與技術,2010,6(15):4112-4115.

作者簡介:黃詩涵(2000.03-),女,漢族,河南駐馬店人,本科,學士學位,研究方向:人工智能和軟件開發應用。

主站蜘蛛池模板: 亚洲AV色香蕉一区二区| jizz在线观看| 日本高清在线看免费观看| 国产高清在线观看| 亚洲香蕉伊综合在人在线| 欧美成人亚洲综合精品欧美激情| 久久亚洲国产一区二区| 久久精品无码一区二区国产区 | 亚洲欧洲日韩国产综合在线二区| 国产靠逼视频| 日韩免费毛片视频| 国产国语一级毛片在线视频| 91精品国产自产91精品资源| 91国内视频在线观看| 婷婷色中文网| 无码精油按摩潮喷在线播放| 国产丰满大乳无码免费播放| 中文一级毛片| 亚洲色欲色欲www在线观看| 国产精品亚洲日韩AⅤ在线观看| 精品无码专区亚洲| 国产麻豆精品手机在线观看| 亚洲精品动漫| 91视频99| 99久久精彩视频| 国产综合在线观看视频| 国产一级毛片网站| 国产簧片免费在线播放| 99久久亚洲综合精品TS| 少妇露出福利视频| 亚洲一级毛片免费观看| 亚洲第一视频网站| 亚洲欧洲一区二区三区| 婷婷亚洲最大| 99手机在线视频| 成年人视频一区二区| 国内自拍久第一页| 真人高潮娇喘嗯啊在线观看| 中文字幕在线欧美| a国产精品| 日韩精品中文字幕一区三区| www.精品国产| 欧美综合在线观看| 亚洲成人网在线播放| 无遮挡国产高潮视频免费观看| 黄色在线不卡| 福利国产在线| 亚洲欧洲日产国码无码av喷潮| 日韩国产高清无码| 成人无码一区二区三区视频在线观看 | 欧美劲爆第一页| 国产精品部在线观看| 久久久久无码精品| 曰AV在线无码| 99人妻碰碰碰久久久久禁片| 国产毛片片精品天天看视频| 亚洲成人网在线观看| 婷婷丁香色| 国产主播在线一区| 国产成人91精品| 97免费在线观看视频| 99无码熟妇丰满人妻啪啪 | 极品av一区二区| 久久久黄色片| 中文字幕佐山爱一区二区免费| 老司机精品99在线播放| 国产一区免费在线观看| 免费看av在线网站网址| 国产精品白浆无码流出在线看| 亚洲国产黄色| 九色综合伊人久久富二代| 无码又爽又刺激的高潮视频| 国产屁屁影院| 2020国产免费久久精品99| 欧美性天天| 欧美爱爱网| 久久婷婷色综合老司机| 国产青青操| 欧美日韩北条麻妃一区二区| 国产高清不卡视频| 亚洲香蕉伊综合在人在线| 欧美日韩北条麻妃一区二区|