亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        使用網(wǎng)絡(luò)爬蟲技術(shù)獲取新冠病毒疫情數(shù)據(jù)的應(yīng)用研究

        2020-07-27 07:30:30林麗星
        關(guān)鍵詞:折線圖爬蟲網(wǎng)頁

        林麗星

        (閩西職業(yè)技術(shù)學(xué)院 信息與制造學(xué)院,福建 龍巖 364021)

        2019-2020年爆發(fā)的新型冠狀病毒肺炎,2020年1月12日被世界衛(wèi)生組織命名為COVID-19[1]。在此之前人類身上并未發(fā)現(xiàn)過新型冠狀病毒?;颊吒腥玖诵滦凸跔畈《竞螅跐摲诒愫苋菀讉魅窘o別人,而自身一旦發(fā)病會導(dǎo)致呼吸困難,少數(shù)病情危急會導(dǎo)致死亡。

        新型冠狀病毒的傳播方式,更多是通過呼吸道空氣飛沫傳播和親密接觸的形式達(dá)到人傳人的惡劣局面。至于是否存在氣溶膠方式傳播,在試行第六版診療方案指明只有在相對封閉的環(huán)境中,同時(shí)氣溶膠濃度處于高濃度狀態(tài)下,才存在傳播的可能性[2]。

        目前全世界疫情形勢并不樂觀,新冠狀病毒的肆虐,所有中國人以及整個世界都在關(guān)注著疫情的消息,關(guān)注著數(shù)據(jù)的變化,盼望著拐點(diǎn)的出現(xiàn),患病人數(shù)的減少,治愈病例的增多。各大主流網(wǎng)站每天都在播報(bào)各類數(shù)據(jù),包括新增的,治愈的病例等,單純的數(shù)字顯示不夠直觀,如果能夠獲得疫情相關(guān)的數(shù)據(jù),并對其進(jìn)行分析,并采用可視化的圖表形式來顯示疫情數(shù)據(jù)的變化??梢暬瘓D表的顯示更為直觀清晰。在獲取相關(guān)的疫情數(shù)據(jù)時(shí)我們借助網(wǎng)絡(luò)爬蟲來爬取疫情數(shù)據(jù),使用python提供的充足的類庫功能對其進(jìn)行分析并轉(zhuǎn)換為直觀的折線圖來顯示。

        1 疫情數(shù)據(jù)獲取可采用的技術(shù)

        要爬取網(wǎng)絡(luò)上的數(shù)據(jù),可使用網(wǎng)絡(luò)爬蟲來實(shí)現(xiàn)。網(wǎng)絡(luò)爬蟲(spiderr或web crawle),也有人稱之為網(wǎng)絡(luò)蜘蛛,像蜘蛛一樣在網(wǎng)絡(luò)上爬行并獲取所需要的數(shù)據(jù)。網(wǎng)絡(luò)爬蟲是一段程序,它從網(wǎng)頁上獲取信息,然后對這些信息進(jìn)行處理,轉(zhuǎn)換成用戶所想要的數(shù)據(jù),并把結(jié)果反饋給用戶。web crawler構(gòu)成了搜索引擎重要的組成部件,但現(xiàn)在網(wǎng)上常用的搜索引擎大多是按照關(guān)鍵字進(jìn)行檢索,檢索出來的數(shù)據(jù)是盡可能大地覆蓋全網(wǎng)絡(luò),因?yàn)闄z索數(shù)據(jù)也是多樣化,有文字、圖片、音視頻等。對于一些網(wǎng)上非結(jié)構(gòu)化數(shù)據(jù),并且信息含量比較多的數(shù)據(jù),目前的搜索引擎可能不能很好地去搜尋出用戶想要的數(shù)據(jù)。而網(wǎng)絡(luò)爬蟲就能很好地解決一般搜索引擎的局限性。

        在數(shù)據(jù)爬取時(shí),可以使用Python來進(jìn)行爬取。Python語言的語法簡單明了,開發(fā)環(huán)境清晰,學(xué)習(xí)難度較低。Python語言是解釋性的腳本語言,它是開源的,而且具有平臺無關(guān)性,可以高效地開發(fā)各種應(yīng)用程序。Python擁有大量的擴(kuò)展庫,這些擴(kuò)展庫相對成熟,而且能夠支持幾乎所有的領(lǐng)域應(yīng)用開發(fā)。因此,對于科研人員進(jìn)行處理工程技術(shù)問題,實(shí)驗(yàn)數(shù)據(jù)的處理、圖表的制作以及進(jìn)行科學(xué)計(jì)算分析,Python都非常適用。

        要獲取疫情數(shù)據(jù),使用到 Python的庫有Numpy庫,用于處理數(shù)組和矢量運(yùn)算;Pathon庫用于處理數(shù)據(jù)結(jié)構(gòu)及進(jìn)行數(shù)據(jù)分析;Matplotlib庫用于將數(shù)據(jù)分析結(jié)果以圖表的形式顯示出來。

        2 網(wǎng)絡(luò)爬蟲技術(shù)獲取疫情數(shù)據(jù)的步驟

        抓取網(wǎng)頁中的數(shù)據(jù),采用的步驟是:抓取數(shù)據(jù),對數(shù)據(jù)進(jìn)行篩選清洗,清洗好的數(shù)據(jù)為了更持久的使用存儲于本地機(jī)中,對數(shù)據(jù)進(jìn)行分析處理,最后以可視化的形式顯示出來。

        2.1 搜索數(shù)據(jù)

        在網(wǎng)絡(luò)上搜尋數(shù)據(jù)的時(shí)候,因?yàn)?AJAX技術(shù)的存在,必須使用基于事件驅(qū)動的爬蟲引擎。根據(jù)新冠疫情數(shù)據(jù)這一主題,對頁面內(nèi)容或是對應(yīng)的URL鏈接進(jìn)行搜索,對頁面的主題進(jìn)行判斷,根據(jù)主題去搜索相關(guān)的網(wǎng)頁。根據(jù)主題進(jìn)行數(shù)據(jù)的爬取,最重要的是確定高效的主題判定策略。常用的主題判定策略有基于網(wǎng)頁內(nèi)容的判定策略、基于網(wǎng)頁鏈接的判定策略及混合內(nèi)容及鏈接的判定策略。

        從fish-search算法到best first serach算法,算法并不是對所有的URL進(jìn)行爬取,只是選擇預(yù)測相似度較高的網(wǎng)址進(jìn)行爬取。不管是爬行主題隨爬行過程動態(tài)變化的主題爬蟲還是基于文本位置的爬蟲還是根據(jù)關(guān)鍵字 key分類進(jìn)行相關(guān)度判定的爬蟲,都只是把網(wǎng)頁內(nèi)的文本內(nèi)容做為主題進(jìn)行判定,沒有考慮到鏈接,所以在數(shù)據(jù)獲取的時(shí)候,會導(dǎo)致某些數(shù)據(jù)的遺漏。

        PageRank算法及 HITS算法,只考慮網(wǎng)頁的鏈接結(jié)構(gòu),雖然能夠發(fā)現(xiàn)關(guān)鍵網(wǎng)頁,具有全局觀,能指導(dǎo)爬蟲爬取的方向,但是因?yàn)闆]有考慮到頁面的內(nèi)容,所以有可能會出現(xiàn)主題不匹配的現(xiàn)象,爬取的數(shù)據(jù)跟用戶所需要的數(shù)據(jù)會差別較大。

        所以在爬取數(shù)據(jù)時(shí),一般會結(jié)合網(wǎng)頁內(nèi)容和網(wǎng)頁鏈接一起進(jìn)行判定。比如說可以先對網(wǎng)頁的鏈接進(jìn)行分析,不同指向的URL進(jìn)行不同的定義,外向鏈表示站外網(wǎng)址,交叉鏈表示友情鏈接,水平鏈表示同級網(wǎng)址,下行鏈表示下級網(wǎng)址,上行鏈表示上級網(wǎng)址。根據(jù)不同的鏈接判定主題內(nèi)容的相關(guān)性。內(nèi)容與鏈接的結(jié)合,覆蓋率及準(zhǔn)確率都有所提高。所以我們在爬取數(shù)據(jù)的時(shí)候,更多的是兩者結(jié)合一起使用。

        2.2 抓取數(shù)據(jù)

        數(shù)據(jù)爬取的時(shí)候,根據(jù)HTML標(biāo)簽去爬取標(biāo)簽中存儲的文本數(shù)據(jù)。除此之外,還會去爬取標(biāo)簽的屬性中存儲的數(shù)據(jù)。根據(jù)網(wǎng)絡(luò)中數(shù)據(jù)類型的不同,爬蟲爬取數(shù)據(jù)的方式也有區(qū)別。如果是結(jié)構(gòu)化數(shù)據(jù)格式,無須處理直接轉(zhuǎn)換即可,比如json格式的數(shù)據(jù),比如 xml數(shù)據(jù);對于非結(jié)構(gòu)化數(shù)據(jù),比如HTML格式的數(shù)據(jù),不能直接使用,必須先進(jìn)行處理,可使用正則表達(dá)式,xpath,bs4等。

        Json數(shù)據(jù)是一種輕量級的數(shù)據(jù)交換格式,閱讀與編寫容易,也方便機(jī)器的解析與生成,非常適合進(jìn)行數(shù)據(jù)交互的場景。在爬取新冠數(shù)據(jù)的時(shí)候,使用 json.loads(requests.get(url=findurlv)json()['data'])從騰訊網(wǎng)站中通過網(wǎng)址來抓取數(shù)據(jù)。數(shù)據(jù)抓取時(shí),通過jsonpath來解析json數(shù)據(jù),有N重嵌套的 json數(shù)據(jù)亦能分析并獲取想要的信息。jsonpath能夠用于從 json文檔中獲取用戶想要的數(shù)據(jù)。

        非結(jié)構(gòu)化數(shù)據(jù)使用 bs4進(jìn)行分析,在分析的時(shí)候,先定義一個 beautifulsoup對象。在這個beautifulsoup對象中將要爬取的頁面源碼數(shù)據(jù)加載進(jìn)去,然后使用此對象的屬性和方法來實(shí)現(xiàn)標(biāo)簽的定位和進(jìn)行數(shù)據(jù)的提取。

        xpath是目前解析效率較高且通用性最強(qiáng)的解析方式。在解析的時(shí)候通過實(shí)例化一個etree對象,并且將目標(biāo)頁面的源碼數(shù)據(jù)加載到此對象中,然后通過使用etree對象的xpath方法結(jié)合對應(yīng)的表達(dá)式進(jìn)行標(biāo)簽的定位和數(shù)據(jù)的提取。Python的Numpy庫提供了標(biāo)準(zhǔn)的數(shù)學(xué)函數(shù)能夠?qū)?shù)據(jù)進(jìn)行快速的運(yùn)算,而且還提供了很多基于C語言的API,使用很方便,同時(shí)還能提高數(shù)據(jù)的運(yùn)算效率。[3]

        在獲取新冠疫情數(shù)據(jù)時(shí),通過內(nèi)容與鏈接分析,最終爬取騰訊網(wǎng)站上的關(guān)于疫情變化的相關(guān)數(shù)據(jù)。從網(wǎng)站上爬取的數(shù)據(jù)是結(jié)構(gòu)化數(shù)據(jù),所以在 python中直接保存為 json格式的數(shù)據(jù)即可。alldata=json.loads(requests.get(url=findurlv)json()['data'])#抓取數(shù)據(jù)

        2.3 數(shù)據(jù)篩選

        獲取網(wǎng)頁上的數(shù)據(jù)后,并不是馬上就能使用,往往要進(jìn)行篩選,清洗才能提取實(shí)際需要的數(shù)據(jù)。對于一些無用數(shù)據(jù),或是相同數(shù)據(jù)進(jìn)行刪除,對一些有誤數(shù)據(jù)進(jìn)行檢驗(yàn)。對于缺少或是丟失的值,可以使用lambda函數(shù)來查看,并且在確定缺失原因后,可以考慮用指定數(shù)來補(bǔ)充。對于連續(xù)變量的處理較為簡單,可以設(shè)定為平均值或者設(shè)定為中位值。分類變量可以考慮用眾數(shù)來補(bǔ)充。對于一些異常值,單變量用蓋帽法或是分箱法來處理,多變量用聚類法來處理。數(shù)據(jù)的清洗可以使用Pandas庫,它提供了方便的類表格的統(tǒng)計(jì)操作和類SQL操作,同時(shí)還提供了強(qiáng)大的缺失值處理功能,使用數(shù)據(jù)預(yù)處理工作更加方便快捷。[4]在獲取疫情數(shù)據(jù)時(shí),只需要時(shí)間及各類患者人數(shù)的數(shù)據(jù),所以只需對其按時(shí)間排序即可。

        alldata.sort(key=lambda x:x['date'])#按日期排序

        2.4 數(shù)據(jù)存儲

        爬取到網(wǎng)頁數(shù)據(jù)后,將數(shù)據(jù)存儲起來進(jìn)行下一步的處理。常見的數(shù)據(jù)存儲方式有三種,可以將數(shù)據(jù)存儲成文本txt文件或是csv文件;或是以數(shù)組的形式存儲或是存儲到數(shù)據(jù)庫中。在爬取新冠疫情數(shù)據(jù)的時(shí)候,將數(shù)據(jù)存儲于數(shù)組中,按日期排序,依次獲取確診,疑似,死亡及治愈數(shù)量。對應(yīng)代碼為:

        #獲取各類人數(shù)放至數(shù)組中

        confirmsick_list.append(int(item['confir m']))

        suspectsick_list.append(int(item['suspect']))

        deadsick_list.append(int(item['dead']))

        healsick_list.append(int(item['heal']))

        2.5 分析并可視化呈現(xiàn)

        圖1 疫情走勢圖

        對數(shù)據(jù)進(jìn)行分析,根據(jù)分析結(jié)果使用 python的 MatPlotlib庫把數(shù)據(jù)分析結(jié)果以折線圖的形式顯示出來。使用MatPlotlib庫,用戶只需要書寫少量的代碼就能夠繪制多種高質(zhì)量的二維或三維圖形。pyplot是MatPlotlib庫的關(guān)鍵模塊,提供了很多接口,能夠快速地構(gòu)建多種圖表,比如函數(shù)圖像、直方圖及散點(diǎn)圖等。[5]使用時(shí),調(diào)用相對應(yīng)的接口即可。因?yàn)橐从骋咔榈淖兓闆r,所以使用折線圖來顯示。關(guān)鍵代碼為:

        plt.figure('疫情走勢圖', facecolor='#e3e3e3', figsize=(11, 6))

        plt.title('疫情走勢圖 ', fontsize=35)

        plt.plot(li_alldate,confirmsick_list,label='確診人數(shù)')

        plt.plot(li_alldate,suspectsick_list,label='疑似人數(shù)')

        plt.plot(li_alldate,healsick_list,label='治愈人數(shù)')

        plt.plot(li_alldate,deadsick_list,label='死亡人數(shù)')

        plt.gca().xaxis.set_major_formatter(mdates.Dat eFormatter('%m-%d'))

        plt.gcf().autofmt_xdate()

        today=time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())

        plt.xticks(pd.date_range('2020-01-13',today),rotation=90)

        plt.grid(linestyle=':')

        plt.legend(loc='best')

        plt.savefig('疫情走勢圖.png')

        #plt.show()

        繪圖函數(shù)處理后的結(jié)果以圖片的形式保存,因?yàn)轵v訊網(wǎng)站上的疫情數(shù)據(jù)是從1月13號開始的,所以截止到3月5號的數(shù)據(jù)對應(yīng)折線圖如圖1所示。圖1的折線圖可以很直觀地顯示新型冠狀病毒疫情的趨勢走向。

        3 結(jié)語

        借助python語言及其強(qiáng)大的擴(kuò)展庫進(jìn)行疫情數(shù)據(jù)的爬取,通過其豐富的庫及強(qiáng)大的快速繪圖功能,能非直觀地用折線圖顯示疫情的趨勢走向。

        猜你喜歡
        折線圖爬蟲網(wǎng)頁
        利用網(wǎng)絡(luò)爬蟲技術(shù)驗(yàn)證房地產(chǎn)灰犀牛之說
        Optimization Design of Miniature Air Quality Monitoring System Based on Multi-Sensor Fusion Technology
        基于Python的網(wǎng)絡(luò)爬蟲和反爬蟲技術(shù)研究
        基于CSS的網(wǎng)頁導(dǎo)航欄的設(shè)計(jì)
        電子制作(2018年10期)2018-08-04 03:24:38
        利用爬蟲技術(shù)的Geo-Gnutel la VANET流量采集
        電子測試(2018年1期)2018-04-18 11:53:04
        讓折線圖顯示在一個單元格中
        再多也不亂 制作按需顯示的折線圖
        電腦愛好者(2018年2期)2018-01-31 19:07:26
        基于URL和網(wǎng)頁類型的網(wǎng)頁信息采集研究
        電子制作(2017年2期)2017-05-17 03:54:56
        大數(shù)據(jù)環(huán)境下基于python的網(wǎng)絡(luò)爬蟲技術(shù)
        電子制作(2017年9期)2017-04-17 03:00:46
        美化Excel折線圖表
        電腦愛好者(2017年1期)2017-04-14 10:16:22
        久久久久亚洲av无码专区网站| 亚洲精品国产亚洲av| 色大全全免费网站久久| 在线 | 一区二区三区四区| 国产成人精品日本亚洲18| 18禁国产美女白浆在线| 亚洲熟女av在线观看| 天天夜碰日日摸日日澡性色av| 手机在线看永久av片免费| 岛国精品一区二区三区| 高清不卡av在线播放| 日韩欧美在线综合网另类| 成在人线av无码免观看麻豆 | 亚洲国产欧美另类va在线观看| 一区二区三区黄色一级片| 人人妻人人澡人人爽欧美一区| 999久久久无码国产精品| 综合91在线精品| 麻豆精品国产免费av影片| 欧美成人午夜免费影院手机在线看| 久久久精品人妻一区二区三区四| 亚洲国产成人精品激情资源9| 午夜视频一区二区在线观看| 成年美女黄的视频网站| 精品国产av 无码一区二区三区| 一区在线播放| 国产专区国产精品国产三级| 鲁一鲁一鲁一鲁一曰综合网| 日本欧美国产精品| 久久精品亚洲熟女九色| 亚洲国产精品无码aaa片| 亚洲色无码播放| 国产精品麻豆A在线播放| 亚洲av乱码二区三区涩涩屋 | 亚洲成在人网站av天堂| 亚洲产在线精品亚洲第一站一| 国产精品日本中文在线| 日韩内射美女片在线观看网站| 亚洲中久无码永久在线观看同| 亚洲午夜无码久久久久软件| 偷拍一区二区盗摄视频|