Yeni koronavirüsün dağılımını gerçek zamanlı olarak Python ile izlemek için sadece bir bilgisayara ihtiyaç var

Lei Feng Net AI Kaynağı Chuang Yorumlar: Şu anda, yeni koronavirüs (COVID-19) küresel olarak yayılırken, denizaşırı bölgelerde teyit edilen vaka sayısı 293683'e yükseldi (veriler 2020.03.2516:54 olarak güncellendi). Kendi sağlığımızı daha iyi korumak için hayatımızı etkileyen gerçek istatistikleri anlamalıyız.

Hastalık dağılımını gerçek zamanlı olarak izlemek için mevcut araçlar nasıl kullanılır? Son zamanlarda, ilginç bir açık kaynak projesi bu sorunu çözdü. Sadece bir bilgisayarla, herkes adımları takip edebilir ve salgın hakkında kişisel bilgi almak için Python'u kullanabilir. Yazar, operasyon sürecini açıklayan bir makale yayınladı ve Leifeng.com'un AI Source Chuang yorumu bunu aşağıdaki gibi derledi.

Resim kaynağı: Sebastian Herrmann, Unsplash'ta

Web gezgini planı

Bu projeyi tamamlamak için Web gezgini yönteminin yanı sıra Selenium (Web tarayıcıları için bir kitaplık) ve Python araçlarını kullanacağız.

Öncelikle verilerin elde edildiği web sitesini bulmamız gerekiyor.Bu eğitimde Worldometers (https://www.worldometers.info/) kullanılmıştır çünkü yazar yukarıdaki verilerin çok doğru olduğunu düşünmektedir ve web sitesi harika görünüyor.

Aşağıdaki plana girmeye başlayın:

Worldometers tablosunda, etkilenen her ülke / bölgenin ilgili verileri gösterilmektedir, bunlar arasında şunlar yer alır: kümülatif doğrulanmış vakalar, yeni vakalar, kümülatif ölümler, kümülatif tedaviler ve kritik hastalık istatistikleri.

Yapmamız gereken, yukarıdaki ayrıntılı verileri bir dizi yöntemle dönüştürmektir, böylece otomatik olarak e-posta adresimize gönderilebilir. Elbette bu verileri içeren başka web sitelerini seçmek imkansız değil.

Ortamı kurun

Öncelikle, ChromeDriver'ı yüklememiz ve ortamı oluşturmamız gerekiyor.

ChromeDriver, tarayıcıyı kontrol etmemize ve test ve diğer işlemler için ona komutlar göndermemize yardımcı olacaktır. Bilgisayar sisteminizle eşleşen kurulum paketini bağlantıdan indirebilirsiniz (https://chromedriver.chromium.org/).

Not: ChromeDriver'a pek aşina değilseniz, mümkün olduğunca en son kararlı sürümü kullanmanız önerilir.

İndirdikten sonra, indirilen dosyayı açmanız gerekecektir. Dosyayı manuel olarak çıkarmak için "Dosya" yı sağ tıklayıp "Buradan Çıkart" ı seçmeniz önerilir.

Daha sonra bu klasörde "chromedriver" adında bir dosya olduğunu göreceksiniz. Bilgisayardaki belirli bir klasöre taşımak için aşağıdaki adımları izlememiz gerekiyor.

  • İlk adım, bir terminal açmak ve aşağıdaki komutu girmektir:

sudo su # kök moduna cd girin

# Mevcut konumdan üsse geri dön mv / home / * your_pc_name * / Downloads / chromedriver / usr / local / bin

# Dosyayı doğru konuma taşıyın

Not: "* your_pc_name *" bölümü, kullanılan bilgisayarın gerçek adıyla değiştirilmelidir.

  • İkinci adım, editörü açmaktır.Yazar, Visual Studio Code'u (https://code.visualstudio.com/) seçmiştir.

  • Üçüncü adım, yeni bir proje oluşturmak ve iki yeni dosya oluşturmaktır. Yazarın aşağıdaki ayarlarına başvurabilirsiniz:

Visual Studio Code - Proje Ayarları

Ve VS Kodunda bir "Terminal" seçeneği olduğunu bulabilir, bunu VS Kodunda dahili terminali açmak için kullanabilirsiniz.

Dördüncü adım, Web tarayıcı sürücüsü için sanal ortamı ve selenyum aracını kurmak ve terminale aşağıdaki komutları yazmaktır:

pip3 virtualenv kur

kaynak venv / bin / activ

pip3 selenyum yükle

Son olarak sanal ortamı etkinleştirin ve hazırlıklarımız tamamlandı.

Kodlamaya başla

Şimdi, ortamı kurmayı ve adresi elde etmek için gerekli bilgileri öğrenmeyi bitirdikten sonra, "kodlama gerçekleştirme" kısmına başlamak üzereyiz.

Bunu bir sınıf ve işlev olarak oluşturacağız, herhangi bir adla oluşturacağız ve ardından Chrome sürücüsünü başlatacağız:

sınıf Coronaviru:

def __init __ (öz):

self.driver = webdriver.Chrome

Ardından, VS Code dahili terminaline gidin ve aşağıdaki kodu girin. Bu komut, dosyayı etkileşimli bir yer olarak kullanmamızı sağlar:

python -i coronavirus.py

Bundan sonra tarayıcının yeni bir sekmesi açıldı ve ona komutlar vermeye başladık. (Denemek istiyorsanız, kaynak dosyaya komut satırını yazmak yerine komut satırını kullanabilirsiniz)

Terminal için komut şu şekildedir:

bot = Koronavirüs

bot.driver.get ('https://www.worldometers.info/coronavirus/')

Şimdi, kaynak kodunu almasını sağlayın:

self.driver.get ('https://www.worldometers.info/coronavirus/')

Web sitesine girdiğimizde seçilen web sayfasından tabloyu çıkarmamız gerekiyor. Dolayısıyla tabloyu bir web elemanı olarak kullanarak ve "tablo" altına kaydederek bu şekilde çalışacağız.

Öğeyi web sitesinde bulmak için find_element_by_xpath kullanırız ve onu filtrelemek için tanımlı kimliğini kullanırız.

table = self.driver.find_element_by_xpath ('// *

/ tbody ')

Bu tabloda, ilgili ad aracılığıyla, başlangıçta edinmemiz gereken ülke veya bölgeyi bulduğunuzdan emin olun.

country_element = table.find_element_by_xpath ("// td

"))

XPath'i tekrar kullanarak "Çin" verilerini kullanmaya çalışıyoruz. "Çin" in yanındaki verilere ihtiyacımız olduğu için, bu satıra ait olduğundan emin olmalıyız, bu nedenle country_element'ten üst düğümü almalıyız:

row = country_element.find_element_by_xpath ("./ ..")

Bu satırda ihtiyacımız olan tüm verileri elde ettik, dizeyi her bir sütuna böldük ve bir değişken olarak kaydettik:

data = row.text.split ("")

total_cases = veri

new_cases = veri

total_deaths = veri

new_deaths = veri

active_cases = veri

total_recovered = veri

ciddi_ kritik = veri

Bunlar arasında "veri", bölünmüş dizeden bir listedir ve daha sonra kullanmak üzere onu farklı değişkenlere yayarız.

Eposta gönder

Kodlama bölümünü tamamladıktan sonra e-posta gönderme bölümüne girmek üzereyiz.

Öncelikle, bir e-posta gönderme sunucusu kurmanız gerekir. Yazar, Google hesap hizmetini kullanır ve ardından "uygulama şifresini" girer, burada yeni bir şifre oluşturur ve onu yazılan komut dosyasında kullanır.

Ardından, alacağımız e-postalar için bir şablon oluşturmak için aşağıdaki kodu kullanacağız:

def send_mail (country_element, total_cases, new_cases, total_deaths, new_deaths, active_cases, total_recovered, ciddi_ kritik):

sunucu = smtplib.SMTP ('smtp.gmail.com', 587)

server.ehlo

server.starttls

server.ehlo

server.login ('e-posta', 'şifre')

subject = 'Ülkenizdeki koronavirüs istatistikleri bugün!'

body = 'Bugün' + country_element + '\

\ nToplam durumlar: '+ total_cases +' \

\ nYeni vakalar: '+ yeni_cases +' \

\ nToplam ölümler: '+ toplam ölümler +' \

\ nYeni ölümler: '+ yeni ölümler +' \

\ nAktif vakalar: '+ active_cases +' \

\ nToplam kurtarılan: '+ total_recovered +' \

\ nCiddi, kritik durumlar: '+ ciddi_ kritik +' \

\ nBağlantıyı kontrol edin: https://www.worldometers.info/coronavirus/ '

msg = f "Konu: {konu} \ n \ n {gövde}"

server.sendmail (

'Koronavirüs',

"e-posta",

msg

)

print ('Hey E-posta gönderildi!')

server.quit

Bu şekilde, en son salgın bilgisinin tek bir edinimi sağlanabilir. Bu betiği her gün tekrar tekrar çalıştırmak istiyorsanız, aşağıdaki bağlantıyı kodlayarak bunu yapabilirsiniz:

https://stackoverflow.com/questions/15088037/python-script-to-do-something-at-the-same-time-every-day

Başarıyla abone olun!

Son olarak, kendi kendine yapılan bir e-posta aboneliğimiz var (aşağıya bakın).

E-posta formu başarılı

Elbette bölgemizdeki yeni taç virüsünün son durumunu kişisel posta kutunuza göndermenin yanı sıra bu yöntemle analoji yoluyla abone olmak istediğiniz diğer bilgiler de özelleştirilebilir ve reklamsız gönderilebilir.

Burada tüm arkadaşlara salgının şu anki durumu altında ellerini sık sık yıkamaları ve maske takmaları gerektiğini, aynı zamanda kendileriyle aşırı fiziksel temastan kaçınmaları gerektiğini bir kez daha hatırlatmak isterim.

Orijinal adres:

https://towardsdatascience.com/how-to-track-coronavirus-with-python-a5320b778c8e

Tam açık kaynak kodu Github adresi:

https://github.com/lazargugleta/coronavirusStats/blob/master/coronavirus.py

Leifeng.com AI Kaynak Oluşturma İncelemesi

Harbin Teknoloji Enstitüsü esnek bir robot geliştirdi, yapay kaslar gövde kadar esnek olabilir
önceki
30 yıla saygı göstermek için Land Rover Discovery Sport'un duygularını ve teknolojisini nasıl değerlendiriyorsunuz?
Sonraki
Algoritma tırmanışından yapay zeka altyapısına kadar, "Tianyuan" açık kaynağının arkasındaki yapay zeka üretkenliğini küçümseyin
Tehlikeli yiyeceklerin listesi! Yüksek kan şekeri, tansiyon, yüksek pürinler, yüksek kolesterol ... hepsi listelenmiştir
İlkbaharda böyle kırmızı hurmalar yemek karaciğer kanını besleyebilir! Kalbi güçlendirebilir, tromboza direnebilir ve kan damarlarını koruyabilir.
Akşam dokuzdan on bire ne yapıyorsun? Hasta olmana şaşmamalı
İnsan vücudu için en iyi uyku ve egzersiz zamanı çok fazla! Sakladığınızdan ve takımınıza uyduğunuzdan emin olun
North Shore Okul Bölgesi, tüm okulların 2 hafta süreyle kapatılacağını açıkladı! Çevrimiçi sınıfa geç
Bu 6 resim, sizi bu haftanın en gözde noktalarına geri götürüyor | Resimlerde kelimeler var
San Francisco Yıllık Ağaç Dikme Günü, Bay Area'da Siyah Yiyecek Festivali, Beyaz Fil İkinci El Müzayedesi
King County Karantina Oluşturmak İçin 4 Milyon Dolarlık Acil Motel Alımı
Penstein, yeni koronavirüs için tespit araçlarının yetersiz olduğunu kabul ediyor, sağlık yetkilileri bir veya iki hafta içinde iyileşeceğini söylüyor.
6. salgın raporu: Dünya çapında toplam 100.000 doğrulanmış tanı, WHO bazı ülkelerin dikkat etmemesinden endişe duyuyor
Qingming ve Hanshi ne zaman
To Top