Python ile Dolar ve Euro Kuru Çekmek (BeautifulSoup)

kusha · 03 Ağustos 2026 · 5 dk okuma

Web scraping (web kazıma), bir web sayfasının HTML içeriğini programatik olarak indirip içinden belirli veriyi ayıklama işlemidir. Bu derste requests ve BeautifulSoup kullanarak bir finans sitesinden güncel dolar ve euro kurunu çekeceğiz.

Kurulum

pip install requests beautifulsoup4

Sayfayı İndirmek ve Ayrıştırmak

import requests
from bs4 import BeautifulSoup

url = "https://www.google.com/finance/quote/USD-TRY"
sayfa = requests.get(url)
html = BeautifulSoup(sayfa.content, "html.parser")

requests.get(url), sayfanın ham HTML'ini indirir. BeautifulSoup(...), bu ham HTML'i, belirli etiketleri (div, span gibi) arayabileceğiniz bir yapıya çevirir.

Fiyatı Bulmak: Tarayıcının "İncele" Aracını Kullanmak

Web scraping'in en önemli adımı, verinin hangi HTML etiketinin/sınıfının (class) içinde olduğunu bulmaktır. Bunun için tarayıcınızda ilgili değere sağ tıklayıp İncele (Inspect)'i seçin — bu, o değerin tam olarak hangi etiket ve class içinde durduğunu gösterir.

Değeri Çekmek

dolar_elemani = html.find("div", class_="YMlKec fxKbKc")
dolar_metni = dolar_elemani.get_text()

html.find("div", class_="..."), verdiğiniz etiket ve sınıfla eşleşen ilk elemanı bulur. .get_text(), o elemanın içindeki metni (HTML etiketleri olmadan) döndürür.

Türkçe Ondalık Ayıracı Sorunu

Web sitesinden gelen değer genelde "18,58" gibi virgüllü bir formattadır — ama Python'da ondalık ayıraç virgül değil nokta'dır. Bu yüzden değeri sayıya çevirmeden önce virgülü noktayla değiştirmeniz gerekir:

dolar = float(dolar_metni.replace(",", "."))
dolar = round(dolar, 2)

Sürekli Güncel Tutmak

Kuru tek seferlik değil, belirli aralıklarla kontrol etmek isterseniz sonsuz bir döngüye alıp arada bekleme koyabilirsiniz:

import time

while True:
    sayfa = requests.get(url)
    html = BeautifulSoup(sayfa.content, "html.parser")
    dolar_metni = html.find("div", class_="YMlKec fxKbKc").get_text()
    dolar = round(float(dolar_metni.replace(",", ".")), 2)
    print(f"Dolar: {dolar} TL")
    time.sleep(5)

Önemli Not: Site Yapısı Değişebilir

Web scraping, hedef sitenin HTML yapısına bağımlıdır — site tasarımını değiştirdiğinde (class adları değişir gibi), scraping kodunuz çalışmayı durdurabilir. Bu, resmi bir API kullanmanın (varsa) her zaman scraping'e tercih edilmesi gereken bir sebebidir; scraping, API bulunmayan durumlar için bir son çare olarak düşünülmelidir.

Sırada Ne Var?

Sırada, aynı tekniği bir e-ticaret sitesinden ürün fiyatı çekmek için kullanacağız.