如何用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
- 如何用實時資料追蹤來解決專案瓶頸?
- 電力資料:追蹤全球電力市場轉型
- IBM如何用資料追蹤世界上最致命的傳染病?IBM
- 搭建資料追蹤系統
- 如何用網頁尾本追蹤使用者網頁
- SQL追蹤和事件追蹤SQL事件
- 如何追蹤Python動態Python
- 如何用資料逆襲追女神——資訊圖
- 如何用資料逆襲追女神–資訊圖
- 利用Zipkin追蹤Mysql資料庫呼叫鏈MySql資料庫
- Facebook為Oculus收購眼球追蹤 這技術有何用
- 標普全球普氏推出區塊鏈網路追蹤阿聯酋的石油資料區塊鏈
- 註解列印日誌和資料鏈路追蹤
- 日誌追蹤
- 程式碼追蹤
- 全球快遞追蹤技術支援(Global Parcel Tracker Support)
- 多日誌檔案資料幫你追蹤使用者
- 新冠肺炎資料視覺化視覺化
- 如何用python做資料分析Python
- 資料水印技術的獨門絕技:為資料安裝可追蹤“ID”,資料洩露溯源追責有章可循
- OpenTelemetry分散式追蹤分散式
- 2022年全球各地區發電量(附原資料表)
- 如何用Python進行資料分析?Python
- Excel連通資料庫,供應鏈進度追蹤效率倍增Excel資料庫
- HDC2021:華為DTM助力無程式碼資料追蹤
- Oracle使用DBCA建立資料庫指令碼追蹤學習案例(二)Oracle資料庫指令碼
- Oracle使用DBCA建立資料庫指令碼追蹤學習案例(一)Oracle資料庫指令碼
- 微服務追蹤SQL(支援Isto管控下的gorm查詢追蹤)微服務SQLGoORM
- 如何追蹤laravel動態Laravel
- 如何追蹤Java動態Java
- 如何追蹤vue動態Vue
- 如何追蹤Go動態Go
- 追蹤解析 Disruptor 原始碼原始碼
- Debug追蹤eclipseEclipse
- 路由追蹤命令詳解路由
- oracle追蹤誤操作DDLOracle
- go的鏈路追蹤Go