Çoğu haber sitesi, web scraping'e hiç gerek kalmadan içeriğini yapılandırılmış bir RSS akışı üzerinden de yayınlar. RSS, scraping'den çok daha kararlı bir veri kaynağıdır çünkü format sabittir ve site tasarımı değişse bile genelde bozulmaz.
RSS Akışını Bulmak
Bir haber sitesinin RSS akışını bulmak için genelde "[site adı] rss" şeklinde arama yapmanız yeterlidir — çoğu büyük haber sitesi, farklı kategoriler (ekonomi, spor, gündem) için ayrı RSS adresleri sunar.
Kurulum
pip install feedparser
Akışı Okumak
import feedparser
url = "https://www.haberSitesi.com/rss/ekonomi"
akis = feedparser.parse(url)
for haber in akis.entries:
print(haber.title)
feedparser.parse(url), RSS adresini indirip ayrıştırır ve akis.entries üzerinden her bir haberi bir nesne olarak dolaşmanızı sağlar.
Başlık, Link ve Tarih Bilgisini Almak
for haber in akis.entries:
baslik = haber.title
link = haber.link
tarih = haber.published
print(f"{tarih} | {baslik} | {link}")
haber.title: haberin başlığı.haber.link: haberin tam URL'i.haber.published: yayın tarihi/saati (metin formatında).
Yalnızca Yeni Haberleri Bildirmek
Deprem botunda gördüğümüz "daha önce bildirilenleri atla" mantığının aynısı burada da işe yarar:
bildirilenler = set()
def yeni_haberleri_kontrol_et():
akis = feedparser.parse(url)
for haber in akis.entries:
if haber.link in bildirilenler:
continue
bildirilenler.add(haber.link)
mesaj_gonder(f"{haber.title}\n{haber.link}")
Burada tekilleştirme anahtarı olarak haberin linkini kullanmak mantıklıdır — her haberin URL'i benzersizdir, başlık teorik olarak (nadiren de olsa) tekrar edebilir.
Nereye Entegre Edebilirsiniz?
Konsola yazdırmak yerine bu veriyi:
- Bir Telegram/Discord botuyla otomatik bildirime çevirebilirsiniz.
- Django/Flask ile yaptığınız bir web sitesinde canlı haber akışı olarak gösterebilirsiniz.
- Bir masaüstü uygulamasının (PyQt5) bir bölümüne yerleştirebilirsiniz.
Sırada Ne Var?
Sıradaki iki derste, siber güvenlik eğitiminin klasik bir konusuna — brute-force (kaba kuvvet) şifre deneme mantığına — eğitim amaçlı, sorumlu bir çerçevede değineceğiz.