Python kullanarak bir web sayfasındaki H1 başlıklarını nasıl çekebilirsiniz? Günümüzde web kazıma (web scraping) işlemleri, veri analizi, içerik izleme ve otomasyon gibi pek çok alanda yaygın olarak kullanılıyor. Özellikle HTML dökümanlarındaki belirli etiketleri, örneğin H1 başlıklarını, çekmek oldukça sık rastlanan bir ihtiyaç. Bu noktada, Python’un güçlü kütüphaneleri olan
Requests ve
BeautifulSoup devreye giriyor.
İlk adımda, hedef siteye HTTP isteği gönderip, HTML içeriğini elde etmek gerekir. Ardından, BeautifulSoup ile HTML yapısını parse ederek, H1 etiketlerini seçmek mümkün. İşte temel adımlar ve örnek kod:
- Öncelikle gerekli kütüphaneleri yükleyin:
1pip install requests beautifulsoup4
- Kodu şu şekilde kullanabilirsiniz:
1234567891011121314
import requests
from bs4 import BeautifulSoup
url = 'https://ornekwebsitesi.com' # Hedef URL
response = requests.get(url)
if response.status_code == 200:
html_content = response.text
soup = BeautifulSoup(html_content, 'html.parser')
h1_tags = soup.find_all('h1')
for idx, h1 in enumerate(h1_tags, 1):
print(f"H1 {idx}: {h1.get_text(strip=True)}")
else:
print(f"Siteye erişim başarısız oldu. Durum kodu: {response.status_code}")
Burada,
find_all('h1') fonksiyonu sayfadaki tüm H1 etiketlerini liste halinde getiriyor. Her bir etiketin içeriğini
get_text() metodu ile alıp, temizlenmiş şekilde çıktı olarak sunuyoruz.
Elbette, bazen sayfada birden fazla H1 olabilir ve bunlar farklı bölümlerde bulunabilir. Ayrıca, belirli bir sınıf veya ID’ye sahip H1’leri seçmek için
find_all() metoduna ek filtreler eklenebilir.
Web kazıma işlemlerinde dikkat edilmesi gerekenler arasında, sitenin robots.txt dosyasını kontrol etmek ve yasal kurallara uygun hareket etmek yer alır. Ayrıca, aşırı istek göndermemek ve site performansını olumsuz etkilememek için zaman aralıklarıyla istek yapmak önemlidir.
Bu temel yapı, farklı projelerde özelleştirilebilir ve daha gelişmiş özellikler eklenerek kullanılabilir. H1 verilerini düzenli olarak takip etmek ya da analiz etmek için bu yöntem oldukça kullanışlıdır.