Selenium ile Web Scraping | Covid19 TR

Merhaba,
Python’da Selenium ve BeautifulSoup modülü kullanarak, Sağlık Bakanlığının Covid19 Bilgilendirme Platformundan verilen tablolardaki verileri Web Scraping işlemi ile nasıl çekebileceğimizi ve CSV dosyasına nasıl kayıt edeceğimizi anlatacağım.

İlk olarak gerekli modülleri aşağıdaki gibi kuralım;

pip install selenium
pip install beautifulsoup4
pip install python-csv

Daha sonra modülleri import edelim;

from selenium import webdriver
from bs4 import BeautifulSoup
import csv
import time

Buradan Chrome için güncel sürümünüze ait Driver’i indirin.
Eğer sürümünüzü bilmiyorsanız öğrenmek için chrome://settings/help

Selenium Browser Ayarları
Driver yolunu “chromedriver.exe” yerine yazın.

browserProfile = webdriver.ChromeOptions()
browserProfile.add_experimental_option('prefs', {'intl.accept_languages': 'tr,tr_TR'})
browser = webdriver.Chrome('Desktop\Python\chromedriver.exe', chrome_options=browserProfile)

URL’ye git ve 1 saniye bekle.
Kaynak kodlarının tam olarak yüklenmesi için bekletiyoruz.

url = browser.get("https://covid19.saglik.gov.tr/TR-66935/genel-koronavirus-tablosu.html")
time.sleep(1)

Kaynak Kodlarını çek

kaynak = browser.page_source
soup = BeautifulSoup(kaynak, "html.parser")

CSV Dosyasını oluştur

file = open("Desktop/covidTR.csv","w", newline="")
writer = csv.writer(file)

Başlığı al, CSV’ye yaz
Başlıkta bulunan boşlukları strip() ile kaldırıyoruz.
Daha sonra \n yani satırları replace() ederek virgül ile değişiyoruz.
split(“,”) ile virgülleri ayırıyoruz ve CSV dosyasına yazdırıyoruz.
Bunu yapmamızın sebebi, CSV‘ye yazarken listeler halinde yazması gerekir. Bizde split() fonksiyonunu kullanarak bunu yaptık.

title = soup.find("tr",{"class":"sticky-header"}).text.strip().replace("\n",",")
writer.writerow(title.split(","))

Tüm veriyi çekip CSV’ye yaz

table = soup.find_all("tr")
s = 0
liste = []
while True:
    try:
        for i in table[s].find_all("td"):
            liste.append(i.text.strip())
        writer.writerow(liste)
        liste.clear()
        s += 1
    except:
        print("bitti")
        break

table bitene kadar döngü döner. Tablo bittiği zaman hata vereceği için except bloğuna düşecektir. Böylelikle program sonlanmış olacaktır.

Böylece Covid19 verilerini CSV dosyasına kayıt etmiş olduk. Çıktımız masaüstünde covidTR.csv olarak gelecektir.

Son olarak tüm kodlara ulaşmak için Github’a Göz Atın.

Diğer projelere ulaşmak için tıklayın.