Python İle Web Sayfası Oluşturmak

Özet: Program yazarken, çoğu zaman çıktılarımızı terminal yerine bir web sayfası gibi görsel bir arayüze yazdırmak isteyebiliriz. Bu yazıda, Python’un HTML modülü ile terminalde aldığımız verileri anlık olarak güncelleyerek dinamik bir web sayfasına aktaracağız.

Amaç: Terminalde aldığımız verileri sürekli olarak güncellenen bir web sayfasına aktarmak.

Not: Kodlarımda, farklı modüllerin yazılımlarında sık karşılaşabileceğiniz bazı uyarılara istinaden yorum satırlarını okumanızı öneririm.

Modüller ve Sürüm: Kodlarımı yazarken kullandığım modül ve sürümü aşağıdaki gibidir:

  • html
  • datetime
  • requests
  • flask

1. Projemizin Genel Planı

  • Tarih ve saat bilgisini datetime modülünden alacağız.
  • Bir web sitesinden (https://www.havadurumux.com/) hava durumu bilgilerini çekmek için requests modülünü kullanacağız.
  • Bu verileri html modülündeki HTML sınıfı aracılığıyla oluşturacağımız web sayfasında göstereceğiz.
  • Web sayfamız sürekli olarak güncellenecek; yani her seferinde en güncel tarih, saat ve hava durumu bilgileri otomatik olarak yüklenecek.

2. Gerekli Modüllerin Yüklenmesi

Aşağıdaki komutları terminale yazarak gerekli modülleri yükleyebilirsiniz:

pip install requests
pip install flask

3. Projemizin Kodları

Aşağıdaki kodları bir Python dosyasına kaydedin (örneğin: app.py) ve terminalden çalıştırın:

from flask import Flask
from datetime import datetime
import requests
from html import HTML

app = Flask(__name__)

# Hava durumu bilgilerini çekmek için gerekli URL ve elementleri tanımlama
url = 'https://www.havadurumux.com/'
element_id = 'd-forecast'
element_class = 'day'
element_day_class = 'date'
element_temp_class = 'temperature'
element_description_class = 'description'
element_icon_class = 'icon'

# HTML sınıfından bir nesne oluşturma
html_generator = HTML()

@app.route('/')
def index():
# Hava durumu verisini çekme ve parçalama
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
days = soup.select(f'#{element_id} .{element_class}')
day_names = soup.select(f'#{element_id} .{element_day_class}')
temps = soup.select(f'#{element_id} .{element_temp_class}')
descriptions = soup.select(f'#{element_id} .{element_description_class}')
icons = soup.select(f'#{element_id} .{element_icon_class}')

# Günlük hava durumu verilerini bir listeye ekleme
weather_data = []
for day, temp, description, icon in zip(days, temps, descriptions, icons):
weather_data.append({
'day': day.get_text(strip=True),
'temp': temp.get_text(strip=True),
'description': description.get_text(strip=True),
'icon': icon['data-src'],
})

# Geçerli tarih ve saat bilgisini alma
now = datetime.now()
date_string = now.strftime('%d %B %Y')
time_string = now.strftime('%H:%M')

# Web sayfasının içeriğini oluşturma
content = html_generator.table(
rows=[{
'Tarih': date_string,
'Saat': time_string,
}],
attributes='border=

Scroll to Top