- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
BeautifulSoup (bs4) ModülüBeautifulSoup (resmi olarak bs4 paket adıyla bilinir), karmaşık HTML ve XML belgelerini kolayca ayrıştırmak (parse etmek) ve içindeki veriyi çekmek için kullanılan popüler bir Python kütüphanesidir.
Bu bir harici kütüphane olduğundan, PIP ile kurulur ve her zaman requests modülü ile birlikte kullanılır.
# Terminalde/Komut Satırında Kurulum
pip install beautifulsoup4
Temel Akış:
requests: İlgili web sayfasının HTML içeriğini indirir.
BeautifulSoup: İndirilen ham HTML metnini, kolayca gezinebilen bir ağaç yapısına (nesneye) dönüştürür.
Arama: Bu ağaç yapısını kullanarak istediğimiz etiketi, sınıfı veya ID'yi buluruz.
import requests
from bs4 import BeautifulSoup
URL = 'https://tr.wikipedia.org/wiki/Python'
# Örnek olarak bir Wikipedia sayfası
# 1. HTML İçeriğini İndir (requests)
yanit = requests.get(URL)
if yanit.status_code == 200:
html_icerik = yanit.text
# 2. HTML'i Ayrıştırma (Parsing)
# 'html.parser' yerleşik bir ayrıştırıcıdır.
soup = BeautifulSoup(html_icerik, 'html.parser')
print(f"Sayfa Başlığı: {soup.title.text}")
print("-" * 40)
# 3. İlk H2 Başlığını Çekme
# .find(): Koşula uyan İLK etiketi döndürür.
ilk_h2 = soup.find('h2')
if ilk_h2:
# .text: Etiketin içindeki sadece metin içeriğini çeker.
print(f"İlk H2 Başlığı: {ilk_h2.text.strip()}")
else:
print("H2 etiketi bulunamadı.")
Web kazıma işleminin kalbi, HTML ağacı içinde doğru etiketi bulmaktır.
.find()Verilen koşullara uyan ilk etiketi döndürür.
Etiket ve Sınıf (Class) Araması: class Python'da rezerve bir kelime olduğu için class_ kullanılır.
# 'mw-page-title-main' ID'sine sahip etiketi bul
baslik_etiketi = soup.find(id='firstHeading')
# 'mw-headline' sınıfına sahip İLK <span> etiketini bul
ilk_span = soup.find('span', class_='mw-headline')
if ilk_span:
print(f"\nID ile Bulunan Başlık: {baslik_etiketi.text}")
print(f"Sınıf ile Bulunan İlk Metin: {ilk_span.text}")
.find_all()Verilen koşullara uyan tüm etiketleri içeren bir Liste döndürür.
# Sayfadaki tüm paragraf (<p>) etiketlerini bir liste olarak al.
tum_paragraflar = soup.find_all('p')
print(f"\nSayfada Toplam {len(tum_paragraflar)} adet paragraf var.")
print("-" * 40)
# İlk iki paragrafın metnini yazdır.
if len(tum_paragraflar) > 1:
print("İlk Paragrafın Başlangıcı:")
print(tum_paragraflar[0].text[:120] + "...")
Bulduğumuz etiketten istediğimiz bilgiyi çekmenin yolları:
Metin İçeriği: etiket.text
Öznitelik Değeri (Attribute): Etiketin özniteliklerine (örneğin href, src, title) bir sözlük gibi erişilir.
# Sayfadaki tüm linkleri (<a> etiketlerini) bulalım
tum_linkler = soup.find_all('a')
# İlk linkin adresini (href özniteliğini) çekme
if tum_linkler:
ilk_link = tum_linkler[0]
# [ 'href' ]: Öznitelik değerini çekiyoruz.
link_adresi = ilk_link.get('href') # veya ilk_link['href']
print(f"\nİlk Linkin Adresi: {link_adresi}")
Yorumlar
Yorum Gönder