BeautifulSoup ile Web Kazıma: Adım Adım Başlangıç

Web kazıma (scraping), bir internet sayfasından bilgi çekmek demektir. BeautifulSoup bu işi Python'da basit ve hızlı hale getirir.

Önce gerekli kütüphaneleri kuralım. BeautifulSoup'u ve sayfaları indirmek için requests kütüphanesini yükle:

1pip install beautifulsoup4 requests

BeautifulSoup nasıl çalışır? Bir HTML dosyasını alır, onu parçalara ayırır ve istediğin etiketleri bulmana yardımcı olur.

Bir örnek yapalım. Diyelim ki basit bir HTML sayfasından başlık ve bağlantıları çıkarmak istiyorsun:

1from bs4 import BeautifulSoup
2import requests
3
4# Örnek HTML içeriği
5html = """
6<html>
7<head><title>Teknoloji Haberleri</title></head>
8<body>
9<h1>Python Dersleri</h1>
10<p>Python programlamayı öğren</p>
11<a href="/ders1">Ders 1: Başlangıç</a>
12<a href="/ders2">Ders 2: Fonksiyonlar</a>
13</body>
14</html>
15"""
16
17# HTML'i ayrıştır
18soup = BeautifulSoup(html, 'html.parser')
19
20# Başlığı bul
21baslik = soup.find('h1')
22print("Başlık:", baslik.text)
23
24# Tüm bağlantıları bul
25baglantilar = soup.find_all('a')
26print("\nBağlantılar:")
27for link in baglantilar:
28print(f" - {link.text}: {link.get('href')}")

Çıktı:

1Başlık: Python Dersleri
2
3Bağlantılar:
4- Ders 1: Başlangıç: /ders1
5- Ders 2: Fonksiyonlar: /ders2

Bu kodda üç temel adım var. Birinci olarak, BeautifulSoup nesnesini oluştururken HTML içeriğini ve parser türünü ('html.parser') veriyorsun. İkinci olarak, find() ile tek bir etiketi, find_all() ile birden fazla etiket buluyorsun. Üçüncü olarak,.text ile metni,.get() ile öznitelik değerini alıyorsun.

Gerçek bir web sayfasından veri çekmek için requests kullan:

1import requests
2from bs4 import BeautifulSoup
3
4# Web sayfasını indir
5response = requests.get('https://example.com')
6soup = BeautifulSoup(response.content, 'html.parser')
7
8# Tüm paragrafları bul
9paragraflar = soup.find_all('p')
10for p in paragraflar:
11print(p.text)

Bu kadar. BeautifulSoup'u kullanmak için sadece HTML yapısını bilmen gerekir. Tarayıcında sağ tıkla, "Kaynağı Görüntüle" de klik et, istediğin verinin hangi etiketin içinde olduğunu gör. Sonra find() veya find_all() ile onu yakala.

konu hakkında tepkinizi verebilirsiniz