İyi günler
Bugün makalemizde python ile web sitesinden html içerik çekmeyi işleyeceğiz. Bu işlemi Pythonda BeutifulSoup kütüphanesi ile yapacağız. Bu kütüphane hakkında detaylı bilgi almak isterseniz https://www.crummy.com/software/BeautifulSoup/bs4/doc linkini inceleyebilirsiniz
BeautifulSoup4 BeautifulSoup kütüphanesinin son sürümü olup, python2 ve python3'ü desteklemektedir.
Bildiğiniz üzere Bs3 sadece Python2'yi destekliyordu.
BeautifulSoup4, daha hızlı ve 3. parti parserlar ile ( lxml,html5lib) sorunsuz çalışabilmektedir.
Örnek uygulama:
Uygulamaya başlamadan önce BeautifulSoup4 kütüphanesin kurmamız gerekmektedir.(uygulama linux mint üzerinde çalıştırıldı )
2 yöntemle kurulum mümkün
1- apt-get install python-bs4
2- pip3 install Beautifulsoup4
Kurulumu tamamladıktan sonra kodlama kısmına geçebiliriz. Ben kodlama için Pycharm Ide kullanıyorum
Kod Açıklaması:
#1 > BeautifulSoup kütüphanesini uygulamamıza import ettik
#2> BeautifulSoup tek başına web sitesini getirmeyecektir. Bu yüzden urllib kütüphanesini import etmemiz gerekmektedir.
#3>soup ediliyor
#4 > Beautiful Soup'un nimetlerinden faydalanma zamanı. İsteğinize göre filtreleme yapabilirsiniz.
bunun için find_all fonksiyonu kullanılmaktadır
soup.find_all('a',limit=1) komutu; web sitesinden çekilen verilerden, a tag'ı ile başlayan ilk veriyi getirir (çünkü limit 1 belirttik )
Örnek 1 Kodları :
#! /usr/bin/python from bs4 import BeautifulSoup #1 import urllib.request #2 url="https://www.programiz.com/" url_oku=urllib.request.urlopen(url) soup=BeautifulSoup(url_oku,'html.parser') #3 print(soup.find_all('a',limit=1)) #4
Örnek 1 çıktısı:
> python3 beautiful_s.py
[<a href="/" title="Programiz Home">Programiz Logo</a>]
Örnek 2: Web sayfasından div tag'ı içeren verilerden , class=content olan taglar'ı getirelim
#! /usr/bin/python from bs4 import BeautifulSoup import urllib.request url="https://www.programiz.com/" url_oku=urllib.request.urlopen(url) soup=BeautifulSoup(url_oku,'html.parser') aranan=soup.find_all('div',attrs={'class':'content'}) print(aranan[0])
veriler liste halinde çekildiği için ve tüm outputu görmek istemediğimizden sadece çekilen verilerden lstenin ilk elemanını ekrana yazdırdık
Örnek 2 Çıktısı
>python3 beautiful_s.py
<div class="content">
<!-- Google Tag Manager (noscript) -->
<noscript><iframe height="0" src="https://www.googletagmanager.com/ns.html?id=GTM-TKXT7MH" style="display:none;visibility:hidden" width="0"></iframe></noscript>
<!-- End Google Tag Manager (noscript) --> </div>
Bu şekilde bir çok filtre kullanarak isteğinize göre filtreleme yapabilirsiniz.
örneklerimiz şimdilik bu kadar
Bol pythonlu günler
Yorumlar
Yorum Gönder