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 requestsBeautifulSoup 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 BeautifulSoup2import requests34# Örnek HTML içeriği5html = """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"""1617# HTML'i ayrıştır18soup = BeautifulSoup(html, 'html.parser')1920# Başlığı bul21baslik = soup.find('h1')22print("Başlık:", baslik.text)2324# Tüm bağlantıları bul25baglantilar = soup.find_all('a')26print("\nBağlantılar:")27for link in baglantilar:28print(f" - {link.text}: {link.get('href')}")Çıktı:
1Başlık: Python Dersleri23Bağlantılar:4- Ders 1: Başlangıç: /ders15- Ders 2: Fonksiyonlar: /ders2Bu 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 requests2from bs4 import BeautifulSoup34# Web sayfasını indir5response = requests.get('https://example.com')6soup = BeautifulSoup(response.content, 'html.parser')78# Tüm paragrafları bul9paragraflar = 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.
0 yorum