Python寫出新冠狀病毒確診人數(shù)地圖的方法
最近肺炎的發(fā)展速度屬實(shí)有點(diǎn)恐怖。剛知道python的pyecharts這個(gè)庫(kù),想到pyecharts可視化的特點(diǎn),正好可以扒一下肺炎實(shí)時(shí)播報(bào)的官網(wǎng)也做個(gè)地圖。
第一步扒取數(shù)據(jù):發(fā)現(xiàn)一個(gè)大問題,各省的確診人數(shù)網(wǎng)頁源代碼里竟然沒有。百度才知道這是js渲染生產(chǎn)的,又是一頓查。找到一種方法。用selenium執(zhí)行一遍網(wǎng)頁渲染的過程就可以了,首先安裝selenium。
pip install selenium
在引用庫(kù)的時(shí)候還需要webdriver這個(gè)啟動(dòng)瀏覽器的東西,我用的是google,所以要下載chromedriver。先查找自己chrome的版本
然后找到chromedriver的對(duì)應(yīng)版本,下載
下載之后把exe文件解壓到編代碼的文件夾里就可以使用了。現(xiàn)在可以爬數(shù)據(jù)了,導(dǎo)入庫(kù)
from selenium import webdriver
然后驅(qū)動(dòng)瀏覽器,并訪問網(wǎng)址
driver = webdriver.Chrome() driver.get('https://news.163.com/special/epidemic/#map_block')
這里記住得設(shè)置一個(gè)等待,要不然爬取數(shù)據(jù)的時(shí)候可能程序運(yùn)行完了網(wǎng)頁還沒打開
driver.implicitly_wait(5)
這時(shí)就可以獲取數(shù)據(jù)了
data = driver.page_source
還是得用正則表達(dá)式篩選一下想要的數(shù)據(jù),別忘了在前面導(dǎo)入import re
name = re.findall(r'<span class="item_name">(.*?)</span>',data,re.S)[1:32] value = re.findall(r'span class="item_confirm">(.*?)</span>',data,re.S)[1:32]
爬取成功
已經(jīng)爬取到數(shù)據(jù)了,接下來就是可視化的部分了,用到pyecharts的Map塊。
pyecharts文檔鏈接在這里——按照文檔里把庫(kù)導(dǎo)入
地圖的代碼如下
但是我Faker這個(gè)下不下來,后來查了一下用了這個(gè)大佬的方法:地址
整體代碼如下:
from pyecharts.charts import Map from pyecharts import options as opts import re from selenium import webdriver driver = webdriver.Chrome() driver.get('https://news.163.com/special/epidemic/#map_block') driver.implicitly_wait(5) #data = driver.find_element_by_xpath('/html/body/div[3]/div[2]/div[2]/ul[1]/li[1]/div/span[1]').text#.get_attribute('href') data = driver.page_source attr = re.findall(r'<span class="item_name">(.*?)</span>',data,re.S)[1:32] value = re.findall(r'span class="item_confirm">(.*?)</span>',data,re.S)[1:32] sequence = list(zip(attr, value)) def map_visualmap(sequence, year) -> Map: c = ( Map() .add(year, sequence, "china", ) .set_global_opts( title_opts=opts.TitleOpts(title="新冠裝狀病毒各省確診人數(shù)"), visualmap_opts=opts.VisualMapOpts(max_=130, min_=95), ) ) return c map = map_visualmap(sequence, '新冠病毒感染情況') map.render(path='2020.html')
看一下成果吧!
以上就是腳本之家小編整理的全部?jī)?nèi)容,感謝大家的學(xué)習(xí)和支持。
- python+selenium定時(shí)爬取丁香園的新型冠狀病毒數(shù)據(jù)并制作出類似的地圖(部署到云服務(wù)器)
- node爬取新型冠狀病毒的疫情實(shí)時(shí)動(dòng)態(tài)
- 將新型冠狀病毒轉(zhuǎn)二進(jìn)制的代碼(首發(fā))
- Python抓新型冠狀病毒肺炎疫情數(shù)據(jù)并繪制全國(guó)疫情分布的代碼實(shí)例
- Python實(shí)現(xiàn)新型冠狀病毒傳播模型及預(yù)測(cè)代碼實(shí)例
- PHP實(shí)現(xiàn)新型冠狀病毒疫情實(shí)時(shí)圖的實(shí)例
- Python實(shí)現(xiàn)實(shí)時(shí)數(shù)據(jù)采集新型冠狀病毒數(shù)據(jù)實(shí)例
- python模擬預(yù)測(cè)一下新型冠狀病毒肺炎的數(shù)據(jù)
- 使用Python制作新型冠狀病毒實(shí)時(shí)疫情圖
相關(guān)文章
Python編程實(shí)現(xiàn)的簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)算法示例
這篇文章主要介紹了Python編程實(shí)現(xiàn)的簡(jiǎn)單神經(jīng)網(wǎng)絡(luò)算法,結(jié)合實(shí)例形式分析了神經(jīng)網(wǎng)絡(luò)算法的原理及Python相關(guān)算法實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-01-01Windows環(huán)境中Python應(yīng)用服務(wù)自啟動(dòng)及其監(jiān)控問題
這篇文章主要介紹了Windows環(huán)境中Python應(yīng)用服務(wù)自啟動(dòng)及其監(jiān)控問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06python實(shí)現(xiàn)數(shù)字炸彈游戲程序
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)數(shù)字炸彈游戲程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-07-07Python實(shí)現(xiàn)破解網(wǎng)站登錄密碼(帶token驗(yàn)證)
這篇文章主要為大家介紹一個(gè)Python暴力破解網(wǎng)站登錄密碼腳本(帶token驗(yàn)證),文中的過程講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的幫助,感興趣的可以學(xué)習(xí)一下2022-02-02Python?JSON數(shù)據(jù)解析過程(最新推薦)
json模塊提供了將JSON格式的數(shù)據(jù)轉(zhuǎn)換為Python對(duì)象(如列表、字典等)以及將Python對(duì)象轉(zhuǎn)換為JSON格式的數(shù)據(jù)的方法,下面給大家分享使用json模塊解析JSON數(shù)據(jù)的常見方法,感興趣的朋友一起看看吧2024-02-02一文帶你了解CNN(卷積神經(jīng)網(wǎng)絡(luò))
CNN是神經(jīng)網(wǎng)絡(luò)中的一種,它的權(quán)值共享網(wǎng)絡(luò)結(jié)構(gòu)使之更類似于生物神經(jīng)網(wǎng)絡(luò),降低了網(wǎng)絡(luò)模型的復(fù)雜度,減少了權(quán)值的數(shù)量。本文主要講解了CNN(卷積神經(jīng)網(wǎng)絡(luò))的基礎(chǔ)內(nèi)容,想了解更多的小伙伴可以看一看這篇文章2021-09-09