Python'da BeautifulSoup'ı Hızlı ve Verimli Bir Şekilde Nasıl Kurulur

Beautiful Soup, Python'da web kazıma ve veri çıkarma için temel bir kütüphane. HTML/XML'i ayrıştırma yeteneği, geliştiriciler için vazgeçilmez. Kurulum, kullanım ve sorun giderme rehberi.

Efe Demir

Efe Demir

5 June 2025

Python'da BeautifulSoup'ı Hızlı ve Verimli Bir Şekilde Nasıl Kurulur

```html

Beautiful Soup, web kazıma ve veri çıkarma görevleri için Python ekosisteminde bir köşe taşı kütüphanesidir. HTML ve XML belgelerini, hatta hatalı biçimlendirilmiş işaretlemelere sahip olanları bile ayrıştırma yeteneği, onu geliştiriciler ve veri bilimciler için paha biçilmez bir araç haline getirir. Bu kılavuz, önkoşulları, çeşitli kurulum yöntemlerini, ayrıştırıcı seçimini, doğrulamayı, temel kullanımı ve yaygın sorunların giderilmesini kapsayan, BeautifulSoup'u hızlı ve verimli bir şekilde nasıl kuracağınızın kapsamlı bir genel bakışını sunar.

💡
Harika bir API Dokümantasyonu oluşturan harika bir API Test aracı mı istiyorsunuz? Güzel API Dokümantasyonu?

Geliştirici Ekibinizin maksimum verimlilikle birlikte çalışması için entegre, Hepsi Bir Arada bir platform mu istiyorsunuz?

Apidog tüm taleplerinizi karşılıyor ve Postman'in yerini çok daha uygun bir fiyata alıyor!
button

BeautifulSoup'a Giriş

Beautiful Soup, HTML ve XML belgelerini ayrıştırmak için tasarlanmış bir Python paketidir. Sayfanın kaynak kodundan, özellikle web kazıma için kullanışlı olan, belgeyi gezinmek, aramak ve değiştirmek için kullanılabilecek bir ayrıştırma ağacı oluşturur. Başlangıçta Leonard Richardson tarafından yazılan ve ilk olarak 2004 yılında yayınlanan Beautiful Soup, adını Lewis Carroll'ın "Alice Harikalar Diyarında Maceraları" adlı şiirinden almıştır ve kütüphanenin ustalıkla ele aldığı kötü yapılandırılmış HTML kodunu tanımlayan "etiket çorbası" terimine bir göndermedir. Mevcut ana sürüm, aktif olarak bakımı yapılan Beautiful Soup 4 (BS4)'tür.

Kütüphanenin kalıcı popülaritesi, çeşitli temel özelliklerinden kaynaklanmaktadır. Basit API'si nedeniyle yeni başlayanlar için uygun, ancak karmaşık ayrıştırma görevleri için yeterince güçlü olarak kabul edilir. Çeşitli temel ayrıştırıcılarla entegre olarak esnek ayrıştırma seçenekleri sunar ve mükemmel hata işleme yetenekleri sergileyerek kusurlu işaretlemeyi zarif bir şekilde yönetir. Açık kaynaklı olması ve büyük, aktif bir topluluk tarafından desteklenmesi, bol miktarda dokümantasyon, eğitim ve desteğin kolayca bulunabileceği anlamına gelir, bu da sorun çözümüne önemli ölçüde yardımcı olur.

Beautiful Soup'un, sürüm 4'ün mevcut standart olmasıyla uzun ömürlülüğü, güvenilirliğini ve geliştirme topluluğunun ona duyduğu güveni işaret eder. Bu istikrar, geliştiricilerin kütüphaneyi öğrenmeye ve kullanmaya, geçerli ve desteklenen bir araç olarak kalacağına güvenerek zaman ayırabilmeleri anlamına gelir. Bu tür bir güvenilirlik, eski özelliklerle uğraşmak veya alternatifler aramak için harcanan zamanı en aza indirdiği için doğrudan verimliliğe katkıda bulunur. Ayrıca, "Beautiful Soup" adı ve "etiket çorbası" ile olan ilişkisi, temel gücünü vurgular: dağınık, gerçek dünya HTML'sini işlemek. Birçok web sitesi, HTML standartlarına sıkı bir şekilde uymaz ve Beautiful Soup'un yaptığı gibi, bu tür kusurları zarif bir şekilde ele alabilen bir ayrıştırıcı, geliştiricilere, başarısız olabilecek veya işaretlemenin kapsamlı bir şekilde ön işlenmesini gerektirebilecek daha katı ayrıştırıcılara kıyasla önemli ölçüde zaman ve çaba kazandırır. Bu doğal sağlamlık, pratik web kazıma için verimliliğinin önemli bir faktörüdür.

Kurulum Önkoşulları

Beautiful Soup'un kurulumuna geçmeden önce, sorunsuz ve verimli bir kurulum süreci sağlamak için çeşitli önkoşulların karşılanması gerekir.

Python Kurulumu

Çalışan bir Python kurulumu temel gereksinimdir. Beautiful Soup 4, Python 3 ile uyumludur ve en son BS4 özellikleri için genellikle Python 3.6 veya üzeri önerilir. Bazı kaynaklar, 4.12.2 gibi Beautiful Soup 4'ün en son sürümlerinin özellikle Python 3.8 veya sonraki sürümlerini gerektirdiğini belirtmektedir. Her zaman Python'un güncel bir sürümünü kullanmanız önerilir. Yüklü Python sürümünü kontrol etmek için bir terminal veya komut istemi açın ve şunu yürütün:

python --version

Veya, birden fazla Python sürümü mevcutsa, özellikle Python 3 için:

python3 --version

Bu komut, yüklü Python sürümünü (örneğin, Python 3.11.0) görüntüleyecektir.

pip (Python Paket Yükleyicisi)

pip, Python için standart paket yükleyicisidir ve Beautiful Soup'u Python Paket Dizini'nden (PyPI) yüklemek için kullanılır. pip genellikle Python 3.4 ve daha yeni sürümlerle birlikte gelir. pip'in yüklü olup olmadığını ve sürümünü kontrol etmek için şunu kullanın:

pip --version

Veya Python 3 ile ilişkili pip için:

pip3 --version

Paketlerle ilgili olası kurulum sorunlarından kaçınmak için pip'in güncel bir sürümüne sahip olmak çok önemlidir. pip'i yükseltmek için şunu çalıştırın:

python -m pip install --upgrade pip

Veya, sistem yapılandırmasına bağlı olarak:

pip3 install --upgrade pip

Python ve pip'in doğru bir şekilde yüklendiğinden ve güncellendiğinden emin olmak proaktif bir önlemdir. Bu kontroller için harcanan birkaç dakika, daha sonra önemli ölçüde sorun giderme süresini engelleyebilir ve doğrudan Beautiful Soup'un daha hızlı ve daha verimli bir şekilde kurulmasına katkıda bulunur.

Sanal Ortamlar

Sanal ortamları kullanmak, Python geliştirmede şiddetle tavsiye edilen bir en iyi uygulamadır ve proje bağımlılıklarını etkili bir şekilde yönetmek için çok önemlidir. Sanal bir ortam, her proje için yalıtılmış bir alan oluşturarak, paketlerin diğer projelerle veya sistem genelindeki Python kurulumuyla etkileşime girmeden bağımsız olarak yüklenmesine ve yönetilmesine olanak tanır. Bu izolasyon, farklı projelerin aynı paketin çelişkili sürümlerini gerektirdiği bir durum olan "bağımlılık cehennini" önler. Sanal ortamları kullanarak, geliştiriciler her projenin tam olarak ihtiyaç duyduğu bağımlılıklara sahip olmasını sağlar, bu da projeleri daha üretilebilir ve paylaşılması daha kolay hale getirir. Bu uygulama, uzun vadeli geliştirme verimliliğine önemli ölçüde katkıda bulunur. Sanal bir ortam oluşturmak için (örneğin, myenv olarak adlandırılır):

python -m venv myenv

Veya, özellikle Python 3 için:

python3 -m venv myenv

Oluşturulduktan sonra, sanal ortam etkinleştirilmelidir.

Windows'ta:

myenv\\\\Scripts\\\\activate

macOS ve Linux'ta:

source myenv/bin/activate

Etkinleştirmeden sonra, terminal istemi genellikle ortamın adıyla (örneğin, (myenv)) önek alır. Sonraki tüm pip install komutları daha sonra paketleri bu yalıtılmış ortama yükleyecektir.

Beautifulsoup'u Yüklemenin 4 Yöntemi

Beautiful Soup 4, pip'in en yaygın ve önerilen yöntem olmasıyla, çeşitli yöntemler kullanılarak yüklenebilir. Yöntem seçimi genellikle kullanıcının Python dağıtımına ve özel ihtiyaçlarına bağlıdır. Yöntemden bağımsız olarak, kurulumu etkinleştirilmiş bir sanal ortamda gerçekleştirmek şiddetle tavsiye edilir.

A. pip Kullanarak (Önerilen ve En Yaygın)

Beautiful Soup'u yüklemenin standart ve en basit yolu, Python Paket Yükleyicisi olan pip'i kullanmaktır. Bu yöntem, en son kararlı sürümü Python Paket Dizini'nden (PyPI) getirir. Beautiful Soup 4'ü yükleme komutu şudur:

pip install beautifulsoup4

Alternatif olarak, özellikle birden fazla Python sürümü yüklüyse, pip'in amaçlanan Python yorumlayıcısına karşılık gelmesini sağlamak için şunu kullanın:

python -m pip install beautifulsoup4

Beautiful Soup sürüm 4.x'i yüklemek için paket adı olarak beautifulsoup4 kullanmak önemlidir. Eski paket adı BeautifulSoup, yeni projeler için genellikle önerilmeyen Beautiful Soup 3'e atıfta bulunur. Sistemdeki varsayılan pip komutu bir Python 2 kurulumuna işaret ediyorsa, Python 3 için pip3 kullanılmalıdır. Çeşitli dokümantasyon kaynaklarında sanal bir ortam içindeki pip'e yönelik ezici tercih, onun Python paket yönetiminin fiili standardı olarak statüsünü vurgular. Bu yaklaşım, bağımlılık yönetimini basitleştirerek, sistem genelindeki paketlerle çakışmalardan kaçınarak ve üretilebilir proje ortamlarını teşvik ederek verimliliği sağlar; bunların tümü modern Python geliştirme iş akışlarının özellikleridir.

B. Conda Kullanarak (Anaconda/Miniconda kullanıcıları için)

Anaconda veya Miniconda Python dağıtımlarını kullananlar için, Beautiful Soup, conda paket yöneticisi kullanılarak yüklenebilir. Topluluk liderliğindeki bir tarifler, derlemeler ve paketler koleksiyonu olan conda-forge kanalından paketler yüklemek genellikle önerilir. İlk olarak, conda-forge kanalını ekleyin ve kanal önceliğini ayarlayın:

conda config --add channels conda-forge
conda config --set channel_priority strict

Ardından, Beautiful Soup'u kullanarak yükleyin:

conda install beautifulsoup4

Bazı kaynaklar ayrıca bs4'ü bir takma ad veya ilgili paket olarak yüklemekten bahseder:

conda install beautifulsoup4 bs4

Bu yöntem, ortamlarını ve paketlerini zaten Anaconda ile yönetenler için özellikle uygundur.

C. Kaynaktan Yükleme (Daha Az Yaygın)

Beautiful Soup'u kaynak kodundan yüklemek, genellikle pip veya conda'nın kullanılamadığı veya belirli bir geliştirme sürümünün gerekli olduğu durumlar için ayrılmış bir seçenektir. Genel adımlar aşağıdaki gibidir:

Kaynak tarball'ını (örneğin, beautifulsoup4-x.y.z.tar.gz) resmi Beautiful Soup web sitesinden veya PyPI proje sayfasından indirin.

İndirilen arşivi çıkarın. Linux veya macOS'ta bir .tar.gz dosyası için: Windows kullanıcıları 7-Zip veya WinRAR gibi bir araca ihtiyaç duyabilir.

tar -xzvf beautifulsoup4-x.y.z.tar.gz

Komut satırını kullanarak çıkarılan dizine gidin:

cd beautifulsoup4-x.y.z

Yükleme komut dosyasını çalıştırın: Veya, özellikle Python 3'ü hedefliyorsanız python3 setup.py install.

python setup.py install

D. Sistem Paket Yöneticilerini Kullanma (Linux)

Bazı Linux dağıtımlarında, Beautiful Soup sistemin paket yöneticisi aracılığıyla kullanılabilir. Örneğin, Debian veya Ubuntu'da, apt-get kullanılarak yüklenebilir: Python 3 için:

sudo apt-get install python3-bs4

Bu yöntem paketi sistemle entegre ederken, her zaman Beautiful Soup'un en son sürümünü sağlamayabilir. Güncel paketler ve daha iyi proje izolasyonu için, sanal bir ortam içinde pip ile yüklemek genellikle tercih edilir. Birden fazla yükleme yönteminin varlığı, Python ortamlarının yönetildiği çeşitli yolları yansıtır. Bir kullanıcı için en verimli yöntem, genellikle mevcut kurulumlarına ve iş akışlarına en uygun olanıdır (örneğin, Anaconda kullanıcıları conda install'ı en doğal bulacaktır). Ancak, genel Python geliştirme için, sanal bir ortam içindeki pip en fazla esnekliği ve kontrolü sunar.

Ayrıştırıcıları Yükleme

Beautiful Soup'un kendisi bir ayrıştırıcı değildir; daha ziyade, temel bir HTML veya XML ayrıştırıcısının üzerine oturan kullanışlı bir API sağlar. Bu mimari seçim, işaretlemeyi yorumlama işinin ayrı bir kütüphaneye devredildiği anlamına gelir. Ayrıştırıcı seçimi, ayrıştırma hızını, hatalı biçimlendirilmiş işaretlemenin ne kadar hoşgörülü bir şekilde ele alındığını ve XML'e özgü özelliklerin kullanılabilir olup olmadığını önemli ölçüde etkileyebilir. Bu delegasyonu anlamak çok önemlidir, çünkü ayrıştırıcı seçimi, web kazıma görevlerinin verimliliğini ve güvenilirliğini doğrudan etkiler. Beautiful Soup çeşitli ayrıştırıcıları destekler:

A. html.parser (Yerleşik)

Kurulum: Bu ayrıştırıcı, Python standart kütüphanesinin bir parçasıdır, bu nedenle ayrı bir kurulum gerekli değildir.

Kullanım: Bir BeautifulSoup nesnesi oluştururken, aşağıdaki gibi belirtin:

soup = BeautifulSoup(markup, "html.parser")

Artıları: Harici bağımlılık yok, bu da kurulumu basitleştirir; birçok görev için iyi bir hız sunar.

Eksileri: html5lib'e kıyasla ciddi şekilde hatalı biçimlendirilmiş HTML'ye karşı genellikle daha az hoşgörülü ve lxml kadar hızlı değil. Eski Python sürümlerindeki (Python 2.7.3 veya Python 3.2.2'den önce) html.parser sürümleri özellikle daha az sağlamdı ve bu durumlarda harici ayrıştırıcıları gerekli hale getiriyordu.

B. lxml (Hız ve esneklik için önerilir)

lxml ayrıştırıcısı, hem HTML hem de XML'i ayrıştırma hızı ve yeteneği nedeniyle popüler bir seçimdir.

Kurulum:

pip install lxml

Kullanım: HTML için: XML için: veya

soup = BeautifulSoup(markup, "lxml")

soup = BeautifulSoup(markup, "xml")

soup = BeautifulSoup(markup, "lxml-xml")

Artıları: Çok hızlı, bu da büyük belgeler veya çok sayıda kazıma görevi için önemli bir avantajdır. Ayrıca HTML'ye karşı oldukça hoşgörülüdür ve şu anda Beautiful Soup 4 tarafından desteklenen tek XML ayrıştırıcısıdır. lxml'den elde edilen performans artışı, özellikle verimlilik açısından kritik uygulamalar için, C bağımlılığına rağmen genellikle kurulumunu haklı çıkaracak kadar önemlidir.

Eksileri: Harici bir C bağımlılığına sahiptir (libxml2 ve libxslt). Önceden derlenmiş ikili tekerlekler, çoğu platform için PyPI'de yaygın olarak bulunurken (pip aracılığıyla kurulumu sorunsuz hale getirir), bazı sistemlerde gerekli derleme araçları olmadan, kaynaktan kurulum daha karmaşık olabilir.

C. html5lib (En hoşgörülü, tarayıcı benzeri ayrıştırma)

html5lib ayrıştırıcısı, HTML belgelerini modern web tarayıcılarının yaptığı gibi aynı şekilde ayrıştırmayı amaçlar ve bu da onu hatalara karşı son derece toleranslı hale getirir.

Kurulum:

pip install html5lib

Kullanım:

soup = BeautifulSoup(markup, "html5lib")

Artıları: Hatalı biçimlendirilmiş HTML'ye karşı son derece hoşgörülü, genellikle diğer ayrıştırıcıların zorlanabileceği belgeleri başarıyla ayrıştırır. Geçerli HTML5 yapısı oluşturmaya çalışır.

Eksileri: Hem lxml hem de html.parser'dan önemli ölçüde daha yavaş. Ayrıca harici bir Python bağımlılığına sahiptir.

Ayrıştırıcı Karşılaştırma Özeti:

Özellik html.parser lxml html5lib
Hız İyi Çok Hızlı Çok Yavaş
Hoşgörü Orta Derecede Hoşgörülü Hoşgörülü (HTML) Son Derece Hoşgörülü (Tarayıcı benzeri)
Bağımlılıklar Yok (Yerleşik) Harici C kütüphaneleri (libxml2, libxslt) Harici Python kütüphanesi
XML Desteği Hayır Evet (BS4 için Birincil XML ayrıştırıcısı) Hayır
Kurulum Kolaylığı Yok (Dahil) Genellikle pip ile kolaydır; derleme yapılıyorsa karmaşık olabilir pip ile kolay
En İyisi Hızlı görevler, harici bağımlılık yok, standart HTML Hız açısından kritik görevler, XML ayrıştırma, sağlam HTML ayrıştırma Son derece bozuk HTML, tarayıcı uyumluluğu

Bir BeautifulSoup nesnesi oluşturulurken hiçbir ayrıştırıcı açıkça belirtilmezse, Beautiful Soup genellikle "en iyi" olanı seçmeye çalışır, tipik olarak lxml'e, ardından html5lib'e ve son olarak html.parser'a öncelik verir. Ancak, farklı ortamlarda tutarlı davranış sağlamak ve kodu daha açık hale getirmek için, BeautifulSoup oluşturucusunda istenen ayrıştırıcıyı belirtmek iyi bir uygulamadır.

Kurulumu Doğrulama

Beautiful Soup ve istenen tüm ayrıştırıcıları yükledikten sonra, kurulumun başarılı olduğunu ve kütüphanenin çalıştığını doğrulamak önemlidir. İki aşamalı basit bir doğrulama süreci önerilir: bir içe aktarma kontrolü ve ardından minimum bir ayrıştırma örneği. Bu yaklaşım daha sağlamdır çünkü başarılı bir içe aktarma yalnızca Python'un paketi bulabildiğini doğrular, ayrıştırma testi ise bir ayrıştırıcı ile doğru bir şekilde çalışabildiğini sağlar.

Adım 1: BeautifulSoup'u İçe Aktar

Bir Python yorumlayıcısı açın veya yeni bir Python komut dosyası (.py dosyası) oluşturun ve kütüphaneyi içe aktarmaya çalışın:

from bs4 import BeautifulSoup
import bs4 # Alternatif içe aktarma

print("Beautiful Soup başarıyla içe aktarıldı!")

Bu kod bir ImportError veya ModuleNotFoundError olmadan çalışırsa, Python Beautiful Soup 4 paketini (bs4) bulabilir demektir.

Adım 2: Sürümü Kontrol Et (İsteğe Bağlı ancak Önerilir)

Yüklü sürümü doğrulamak için, özellikle belirli bir sürüm amaçlanmışsa:

print(f"Beautiful Soup sürümü: {bs4.__version__}")

Bu, yüklü sürüm dizesini (örneğin, 4.12.2) çıktılar.

Adım 3: Temel Ayrıştırma Testi

Kütüphanenin ve bir ayrıştırıcının birlikte çalıştığından emin olmak için basit bir ayrıştırma işlemi gerçekleştirin.

from bs4 import BeautifulSoup

# Test için basit HTML dizesi
html_doc_string = "<html><head><title>Test Sayfam</title></head><body><h1>Merhaba, BeautifulSoup!</h1><p>Bu bir testtir.</p></body></html>"

# Bir BeautifulSoup nesnesi oluşturun, istenirse açıkça bir ayrıştırıcı seçin
# lxml yüklüyse ve tercih ediliyorsa: soup_string = BeautifulSoup(html_doc_string, 'lxml')
# Aksi takdirde, yerleşik ayrıştırıcıyı kullanın:
soup_string = BeautifulSoup(html_doc_string, 'html.parser')

# Başlığı çıkarın ve yazdırın
page_title = soup_string.title.string
print(f"Dizeden başlık: {page_title}")

# H1 etiketinin metnini çıkarın ve yazdırın
h1_text = soup_string.find('h1').get_text()
print(f"Dizeden H1: {h1_text}")

# Paragraf metnini çıkarın ve yazdırın
p_text = soup_string.find('p').text
print(f"Paragraf metni: {p_text}")

Bu komut dosyası çalışır ve "Test Sayfam", "Merhaba, BeautifulSoup!" ve "Bu bir testtir." yazdırırsa, kurulum işlevseldir. Yaygın web kazıma kullanım durumlarıyla uyumlu daha pratik bir doğrulama için, canlı bir web sayfasını getirmek ve ayrıştırmak için requests kütüphanesini entegre edebilir. Beautiful Soup'un kendisi web içeriğini getirmez; yalnızca onu ayrıştırır. requests kütüphanesi, HTML verilerini almak için HTTP istekleri yapmak için yaygın olarak kullanılır. İlk olarak, requests'in yüklü olduğundan emin olun:

pip install requests

Ardından, aşağıdaki komut dosyası kullanılabilir:

from bs4 import BeautifulSoup
import requests # HTTP istekleri yapmak için

print(f"Beautiful Soup sürümü: {BeautifulSoup.__version__}") # Sürüme sınıf aracılığıyla erişin

# 1. Hızlı doğrulama için basit dize ayrıştırma
html_doc_string = "<html><head><title>Test Sayfam</title></head><body><h1>Merhaba, BeautifulSoup!</h1></body></html>"
soup_string = BeautifulSoup(html_doc_string, 'html.parser') # veya 'lxml' yüklüyse
print("Dizeden başlık:", soup_string.title.string)
print("Dizeden H1:", soup_string.find('h1').get_text())

# 2. Temel web sayfası ayrıştırma (requests kütüphanesini gerektirir)
try:
    url = "<http://quotes.toscrape.com>" # Kazıma örnekleri için sıklıkla kullanılan bir site

    # User-Agent başlığı ayarlamak iyi bir uygulamadır
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
    }

    response = requests.get(url, headers=headers, timeout=10) # Başlıklar ve zaman aşımı eklendi
    response.raise_for_status() # HTTP hataları için bir istisna oluşturun (4xx veya 5xx)

    # BeautifulSoup ile daha iyi kodlama işleme için response.content kullanın
    soup_web = BeautifulSoup(response.content, 'html.parser')

    # Sayfanın başlığını çıkarın
    page_title_web = soup_web.title.string if soup_web.title else "Başlık bulunamadı"
    print(f"\\\\nWeb sayfasından başlık ({url}): {page_title_web}")

    # İlk alıntının metnini bulun ve yazdırın
    first_quote = soup_web.find('span', class_='text')
    if first_quote:
        print(f"İlk alıntı: {first_quote.text.strip()}")
    else:
        print("Sayfada ilk alıntı bulunamadı.")

except requests.exceptions.Timeout:
    print(f"Hata: {url} isteği zaman aşımına uğradı.")
except requests.exceptions.HTTPError as http_err:
    print(f"Hata: {url} getirilirken HTTP hatası oluştu: {http_err}")
except requests.exceptions.RequestException as e:
    print(f"Hata: {url} URL'sini getirirken bir hata oluştu: {e}")
except Exception as e:
    print(f"Web ayrıştırma sırasında beklenmedik bir hata oluştu: {e}")

Canlı bir sayfa getirmeyi ve HTTP isteği için temel hata işlemeyi içeren bu genişletilmiş doğrulama, daha eksiksiz bir "başlangıç" resmi sağlar ve Beautiful Soup'un gerçek web kazıma görevlerine hazır olduğunu doğrular. response.content'in kullanılması, karakter kodlama sorunlarından kaçınmak için özellikle önemlidir ve Beautiful Soup'un seçilen ayrıştırıcısının karakter kodlamayı daha etkili bir şekilde işlemesini sağlayarak, potansiyel bozuk metin sorunlarını önler.

Temel Kullanım Örnekleri

Beautiful Soup yüklendikten ve doğrulandıktan sonra, HTML'yi ayrıştırmak ve veri çıkarmak için kullanılmaya başlanabilir. Tipik bir iş akışı, requests gibi bir HTTP istemci kütüphanesi kullanarak web içeriğini getirmeyi, ardından bu içeriği Beautiful Soup ile ayrıştırmayı içerir.

1. Web Sayfası İçeriğini Getirme:

requests kütüphanesi, bir URL'den HTML almak için yaygın olarak kullanılır. Henüz yüklü değilse (örneğin, doğrulama sırasında), yükleyin:

pip install requests

Ardından, içeriği getirin:

import requests

url = '<http://quotes.toscrape.com>' # Örnek web sitesi
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
try:
    response = requests.get(url, headers=headers, timeout=10)
    response.raise_for_status() # HTTP hatalarını kontrol eder
    html_content = response.content # Ham baytlar için .content kullanın
except requests.exceptions.RequestException as e:
    print(f"Getirme hatası {url}: {e}")
    html_content = None

2. Bir BeautifulSoup Nesnesi Oluşturma:

Getirilen HTML içeriğini (tercihen kodlamaları sağlam bir şekilde işlemek için response.content) ve istenen ayrıştırıcı adını BeautifulSoup oluşturucusuna iletin:

from bs4 import BeautifulSoup

if html_content:
    soup = BeautifulSoup(html_content, 'lxml') # lxml ayrıştırıcısını kullanma
    # Veya: soup = BeautifulSoup(html_content, 'html.parser')
else:
    soup = None # İçerik getirme başarısız olduğunda durumu ele alın

3. Ayrıştırma Ağacında Gezinme ve Arama:

Beautiful Soup, ayrıştırılan HTML yapısında gezinmek ve arama yapmak için sezgisel yöntemler sağlar.

Etiketlere Doğrudan Erişim:

if soup:
    print(f"Sayfa Başlığı: {soup.title.string if soup.title else 'N/A'}")
    first_h1 = soup.find('h1') # h1 yoksa soup.h1'den daha sağlam
    print(f"İlk H1: {first_h1.string if first_h1 else 'N/A'}")

Etiket Adını ve Metni Alma:

if soup and soup.title:
    print(f"Başlık etiketinin adı: {soup.title.name}") # Çıktı: başlık
    print(f"Başlık etiketinin metni: {soup.title.string}") # Metin içeriği

# İç içe yapılarla etiketler için, .get_text() genellikle daha kullanışlıdır
first_p = soup.find('p')
if first_p:
    print(f"İlk paragrafın metni: {first_p.get_text(strip=True)}") # strip=True fazladan boşluğu kaldırır

find() ve find_all() Kullanma:

Bunlar, öğeleri bulmak için güçlü yöntemlerdir. find(name, attrs, string, **kwargs): İlk eşleşen öğeyi döndürür.

if soup:
    # class'ı 'quote' olan ilk div'i bul
    quote_div = soup.find('div', class_='quote') # 'class_' çünkü 'class' bir Python anahtar kelimesidir
    if quote_div:
        quote_text_span = quote_div.find('span', class_='text')
        if quote_text_span:
            print(f"İlk Alıntı Metni: {quote_text_span.string}")

find_all(name, attrs, recursive, string, limit, **kwargs): Tüm eşleşen öğelerin bir listesini döndürür.

if soup:
    # Tüm <a> etiketlerini (bağlantılar) bul
    all_links = soup.find_all('a')
    print(f"\\\\nBulunan {len(all_links)} bağlantı:")
    for link in all_links[:5]: # İlk 5 bağlantıyı yazdır
        print(link.get('href')) # 'href' özniteliğini çıkarma

Etiket adı ve CSS sınıfı (class_ argümanını kullanarak) gibi yaygın parametrelerle find() ve find_all()'ı göstermek, çoğu web kazıma etkinliği için temel oldukları için anında pratik değer sağlar.

API Tasarım-Öncelikli Yaklaşımı Apidog'da Uygulayın

API'leri oluşturmanın ve kullanmanın daha kolay yolunu keşfedin