Python : BS4 / BeautifulSoup Temel Anlatım

Python : BS4 / BeautifulSoup Temel Anlatım


Python'da BeautifulSoup(BS4) nasıl kullanıldığı hakkında kısa ve net temel bilgiler ile bilmeniz gereken temel öncelikleri öğrenmenizi sağlayacağız. BeautifulSoup ya da kısaca BS4, HTML veya XML dosyalarını kolayca okumanı, aramanı ve verileri çıkarmanı sağlayan bir Python kütüphanesidir.

Python BeatifulSoup Kurulumu

Öncelikle  Windows kullanıcı iseniz PATH bölümünde Python ekli olmalıdır.

Terminal bölümünde aşağıda ki komut satırını çalıştırmanız yeterlidir.

python -m pip install bs4


Hata alıyorsanız "python -m pip install --upgrade pip" komutunu çalıştırın

BeautifulSoup Temel Komutları 


İlk öncelikle import işlemi ile BS4 çağrılmalıdır bu işlemi "from bs4 import BeautifulSoup" olarak satır başında belirtebilirsiniz.

Örnek :


from bs4 import BeautifulSoup


BS4 HTML KOMUT AKTARIMI

BeautifulSoup kullanımında belirtmemiz için bir değişken içerisine html kodlarımızı aktarmalıyız. Bunun için "String Biçiminde!" olacak düzende olmasına dikkat etmemiz gerekiyor. Bir değişken daha oluşturarak html kodlarını BeautifulSoup içerisinde kullanmak için:

from bs4 import BeautifulSoup

html_doc = """
<html>
<head><title>Film Listesi</title></head>
<body>
<h1>Popüler Filmler</h1>
<h1>Yazılım Çalış</h1>
<h1>Mühendis Çalış Mühendis Ol</h1>

<div>Bu bir div içeriğidir</div>
<div>Bu iki div içeriğidir</div>
<div>Bu üç div içeriğidir</div>

<ul>
<li class="film">Inception</li>
<li class="film">Interstellar</li>
<li class="film">The Matrix</li>
</ul>

<a href="https://www.google.com">Google</a>
<a href="https://www.imdb.com">IMDb</a>
</body>
</html>
"""

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


Prettify (HTML Biçimlendirme)

HTML’yi güzelce biçimlenmiş (indentli) şekilde string olarak verir. Kısaca görsel temizlik için. Bir önceki örnekte vermiş olduğum <DİV> etiketinde hizalanmalarda 3 adet div adresinden bir satır sıralamanın gerisinde, bu tarz okuması karışık olan HTML kod dosyalarında Prettify kullanımı, kod yapısını görsel düzenlemeye kesin çözüm olacaktır.

Kod Çalıştırma : 

from bs4 import BeautifulSoup

html_doc = """
<html>
<head><title>Film Listesi</title></head>
<body>
<h1>Popüler Filmler</h1>
<h1>Yazılım Çalış</h1>
<h1>Mühendis Çalış Mühendis Ol</h1>

<div>Bu bir div içeriğidir</div>
<div>Bu iki div içeriğidir</div>
<div>Bu üç div içeriğidir</div>

<ul>
<li class="film">Inception</li>
<li class="film">Interstellar</li>
<li class="film">The Matrix</li>
</ul>

<a href="https://www.google.com">Google</a>
<a href="https://www.imdb.com">IMDb</a>
</body>
</html>
"""

soup = BeautifulSoup(html_doc,"html.parser")
soup = soup.prettify()
print(soup)

Çıktısı :


Çıktı üzerinde bütün kod satırlarının artık daha düzenli ve işlev sıralamasına göre öncelikleri baz alınarak sıralandığını görebiliyoruz.

Tag Çıktısı(title,head,body,div)

HTML taglarının isteğe göre çıktı vermesini sağlar. İstenilen kısım Dictionary(Sözlük) yapısı ile belirtilerek görmek istenilen kısım HTML içerisinden seçilerek alınabilir.

Kod :


soup = BeautifulSoup(html_doc,"html.parser")
result = soup.title
print(result)


Çıktı :




Çıktı'da TAG bölümlerinin gözükmemesi için string olarak çağıra bilirsiniz. ("print(result.string)")


Find ve Find_all

HTML kod blokları içerisinde belirtilen TAG içerisinde istenilen alt TAG içeriklerini sizlere getirir. Find ve Finl_all arasında ki fark nedir;

Find : Belirtilen TAG içeriğinin ilk elemanını liste olarak getirir.

Kod :
soup = BeautifulSoup(html_doc,"html.parser")
result = soup.find("div")
print(result)

Çıktı :

<div>Bu bir div içeriğidir</div>


Find_All : Belirtilen TAG içeriğinin tamamını liste olarak getirir.

Kod :
soup = BeautifulSoup(html_doc,"html.parser")
result = soup.find_all("div")
print(result)

Çıktı

[<div>Bu bir div içeriğidir</div>, <div>Bu iki div içeriğidir</div>, <div>Bu üç div içeriğidir</div>]


Get ( Link Bulma, Class Sınıfı Seçme)

Genellikle kullanımı bir çekilen site HTML kod satırında belirtilen bazı linkleri bulmak için sınıf belirtmedir. Class içeriği ve İD gibi sınıflarında içerisinde arama yapar list şeklinde içerik döngü İD gibi kısımlarını bizlere çıktı olarak verir.

Kod : 
soup = BeautifulSoup(html_doc,"html.parser")
result = soup.find_all("a")
for i in result:
print(i.get("href"))

Çıktı :
https://www.google.com
https://www.imdb.com

TAG kullanımı ve amaçlarınız doğrultusunda "a","img","class","id" bölümleri sizlere istenilen çıktıyı ulaştıracaktır.

HackerHub Python Dersleri Hakkında

Bu içerikte, temel düzeyde BeautifulSoup kullanımı ele alındı. İlerleyen yazılarda, farklı Python kütüphanelerine dair hem temel hem de ileri seviye anlatımlarla sizlerle olacağız. Daha fazlası için Software kategorimizi ziyaret etmeyi unutmayın.



0 Comments

Post a Comment

Post a Comment (0)

Previous Post Next Post

Hack Haber