如何用Python追蹤全球各地新冠肺炎資料?
隨著大規模疫情的爆發,相關的各種資訊的傳播速度甚至超過了冠狀病毒(COVID-19)本身,這裡面我們很難去篩選哪些資訊是真的有益於我們的。但有一點很明確的是,我們必須瞭解影響我們居住地區的實際統計資料。
今天,我們將用一種有趣的方式——Python,來教大家如何獲得全球冠狀病毒相關數字的資訊。
我將向你展示如何在你的郵件中獲得每天有多少受冠狀病毒影響的人以及類似的資訊。
我將使用一種方法,叫做 Web抓取,使用到的工具是 Selenium和 Python。
來吧~直接進入正題
準備工作
首先,我們必須找到資料來源,也就是資料究竟從哪兒來?我決定用Worldometers來做這個,因為這裡面的資料相對比較準確,同時網站的頁面也做得非常直觀、簡潔。
這是一個表,顯示了受影響的每個國家的資料,在許多列中有不同的資料內容。
我們想做的是從表格中獲取你想要獲得的對應國家的資料,然後它會自動給你傳送電子郵件。
設定環境
首先,你需要安裝一個ChromeDriver( https:// chromedriver.chromium.org / ),它將使我們能夠操作瀏覽器,並向它傳送命令以供測試和使用。
開啟連結並下載作業系統的檔案,然後解壓縮該檔案。我建議進入檔案,透過右鍵點選手動操作,然後點選“解壓縮這裡”。
在這個資料夾裡,有一個叫做“chromedriver”的檔案,我們必須把它移到你電腦上的一個特定資料夾裡。
開啟終端,輸入以下命令:
1sudo su #enter the root mode
2cd #go back to base from the current location
3mv /home/*your_pc_name*/Downloads/chromedriver /usr/local/bin
4#move the file to the right location
接下來,只需要插入計算機的實際名稱,而不是* your_pc_name *。
完成之後,開啟編輯器。我個人的選擇是Visual Studio程式碼。它易於使用、可定製,並且可以減輕你裝置的負擔。
在任何你喜歡的地方開啟一個新專案並建立兩個新檔案。這是我的檔案開啟後的樣子:
在VS程式碼中,有一個“Terminal”選項卡,你可以使用它開啟VS程式碼中的內部終端,這對於將所有東西放在一個地方非常有用。
當你開啟它時,其實需要安裝的東西很少,這就是web驅動程式的虛擬環境和selenium。
將一下命令輸入終端:
1pip3 install virtualenv
2source venv/bin/activate
3pip3 install selenium
啟用虛擬環境之後,我們就完全準備好了。
編碼
既然我們已經確定了我們想要什麼(What),我們將從哪裡得到它(Where),我們就必須做“如何得到”(How)的部分。
建立你的工具,並啟動Chrome的驅動程式。
1class Coronavirus():
2 def __init__(self):
3 self.driver = webdriver.Chrome()
這就是我們需要開始開發的全部內容。現在去你的終端並輸入:
1python -i coronavirus.py
這個命令讓我們可以將檔案作為一個互動式遊樂場。瀏覽器的新標籤將被開啟,我們可以開始向它發出命令。
如果你想進行試驗,可以使用命令列,而不是直接將其輸入到原始檔中。(不是自用機器人。)
終端:
1bot = Coronavirus()
2bot.driver.get(')
原始碼:
1self.driver.get(')
當我們訪問網站時:
將該表作為Web元素,並將其儲存在
table
下。為了在網頁上找到這個元素,我們使用
find_element_by_xpath()
並使用它定義的id來過濾它。
1table = self.driver.find_element_by_xpath('//*[@id="main_table_countries"]/tbody[1]')
在這張表中,我們需要獲取國家,以確保它是我們最初想要查詢的國家。
1country_element = table.find_element_by_xpath("//td[contains(text(), 'China')]")
我們再次使用XPath,以“中國”為例。
因為我們需要‘China’旁邊的資料,所以我們必須確保它屬於那一行,這就是為什麼我們要從
country_element
中獲取父元素。
1row = country_element.find_element_by_xpath("./..")
在這一行中,我們得到了所有需要的資料我們將把這個字串分成每一列並儲存到變數中。
1data = row.text.split(" ")
2total_cases = data[1]
3new_cases = data[2]
4total_deaths = data[3]
5new_deaths = data[4]
6active_cases = data[5]
7total_recovered = data[6]
8serious_critical = data[7]
基本上‘data’是一個列表,它來自於字串的分割,然後我們把它分散到不同的變數中,以便以後使用。
傳送郵件
我們必須設定電子郵件傳送伺服器,進入谷歌賬戶服務,進入“應用程式的密碼”,在那裡你應該生成一個新的密碼,並在這個小指令碼中使用它。
我們也為我們將收到的電子郵件製作模板:
1def send_mail(country_element, total_cases, new_cases, total_deaths, new_deaths, active_cases, total_recovered, serious_critical):
2server = smtplib.SMTP('smtp.gmail.com', 587)
3server.ehlo()
4server.starttls()
5server.ehlo()
6server.login('email', 'password')
7subject = 'Coronavirus stats in your country today!'
8body = 'Today in ' + country_element + '\
9\nThere is new data on coronavirus:\
10\nTotal cases: ' + total_cases +'\
11\nNew cases: ' + new_cases + '\
12\nTotal deaths: ' + total_deaths + '\
13\nNew deaths: ' + new_deaths + '\
14\nActive cases: ' + active_cases + '\
15\nTotal recovered: ' + total_recovered + '\
16\nSerious, critical cases: ' + serious_critical + '\
17\nCheck the link:
18msg = f"Subject: {subject}\n\n{body}"
19server.sendmail(
20'Coronavirus',
21'email',
22msg
23)
24print('Hey Email has been sent!')
25server.quit()
如果你想讓這個指令碼每天重複,看看這個連結: https:// stackoverflow.com/quest ions/15088037/python-script-to-do-something-at-the-same-time-every-day
原文連結: https:// towardsdatascience.com/ how-to-track-coronavirus-with-python-a5320b778c8e
歡迎點選“ 京東智聯雲 ”瞭解更多精彩內容!
以上資訊來源於網路,由“京東智聯雲開發者”公眾號編輯整理,不代表京東智聯雲立場。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69912185/viewspace-2681954/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 新冠肺炎資料視覺化視覺化
- 教你如何用Python追蹤快遞資訊!Python
- 2020 全球新冠肺炎之下,了不起的 AI 人AI
- 如何用實時資料追蹤來解決專案瓶頸?
- 利用Python爬取新冠肺炎疫情實時資料,Pyecharts畫2019-nCoV疫情地圖PythonEcharts地圖
- 搭建資料追蹤系統
- 電力資料:追蹤全球電力市場轉型
- 彭博社:超過30%英國人刪掉新冠追蹤AppAPP
- 如何追蹤Python動態Python
- IDC:新冠肺炎對全球終端裝置市場影響評估
- 如何用網頁尾本追蹤使用者網頁
- 哈佛開發新冠肺炎風險地圖地圖
- 新冠肺炎致死率為何差異大?
- 『新冠肺炎困得住中國經濟嗎?』今日資料行業日報(2020.02.13)行業
- CrunchBase:新冠肺炎導致美國風險投資大幅下降
- 約翰斯·霍普金斯大學:全球新冠肺炎死亡病例已超400萬例
- 利用Zipkin追蹤Mysql資料庫呼叫鏈MySql資料庫
- Cirium:資料揭示新冠肺炎對中國航空業的影響及對全球航空旅遊增長的影響
- 基於Echarts的全球COVID-19(新冠肺炎)新增病例動態視覺化Echarts視覺化
- 今日資料行業日報(2020.10.12)『WHO:全球單日新增新冠肺炎確診病例數量達歷史最高水平』行業
- 最新預測:新冠肺炎疫情(COVID-19)對全球航空運輸經濟影響
- 新冠肺炎疫情後中外合資企業:何去何從?(附下載)
- Worldmeter:2020年6月28日全球新冠肺炎確診病例累計超過1000萬
- ICAO:2020年Q1全球航空市場受新冠肺炎損失超40億美元
- Nikkei:新冠肺炎改變了日本的線上銷售
- Cell:揭示新冠肺炎導致嗅覺喪失機制
- 註解列印日誌和資料鏈路追蹤
- 專訪霍普金斯新冠追蹤網站創始人:如何突破不可靠信源收集資料,服務超10億日點選量網站
- 麥肯錫:後新冠肺炎時代消費者新常態分析
- 新入口網站讓全球旅行者能夠在世界各地預約強制的新冠病毒檢測網站
- 如何用python做資料分析Python
- 2022年全球各地區發電量(附原資料表)
- 警惕黑客利用“新冠肺炎”熱詞發起網路攻擊黑客
- 勿信:駭客稱MP3可以治癒新冠肺炎
- 貝恩諮詢:新冠肺炎困得住中國經濟嗎?
- Cirium:新冠肺炎疫情市場環境下的商務航空
- 日誌追蹤
- 程式碼追蹤