--- Requests ve BeautifulSoup modülleri internetten veri çekmemizi ve bunları parçalamamızı sağlarlar. ---
--- Bu modüller Python ile hazır gelmediğinden Windows üzerine kurulum için; cmd'yi açıyoruz ve şu iki komutu sırayla çalıştırıyoruz:
pip3 install requests
pip3 install beautifulsoup4
Bunları çalıştırdığımız zaman requests ve beautifulsoup kurulmuş olacak.
--- Bu modüller ile ilgili olarak örneği Youtube'dan bir arama sonuç sayfası üzerinden gerçekleştirmek istiyorum. ---
--- İlk olarak requests i ve BeautifulSoup modüllerini aşağıda gördüğünüz gibi programımıza dahil ediyoruz. requests modülü bilgileri çekecek ve BeautifulSoup ile bu bilgileri güzel bir şekilde alıcaz. ---
--- Daha sonra url değişkenine arama sonucumuzda çıkan linki veriyoruz. (Ben bursa diye arattım) ---
--- response = requests.get(url) diyerek url sayfasındaki tüm bilgilere çekmiş oluyoruz. Burada dikkat etmeniz gereken nokta response değişkenini kontrol amaçlı print() fonksiyonu ile yazdırdığınızda response size 200 çıktısı vermeli ki bu bize internet sayfasından bilgileri çekebildiğimiz anlamına gelir. Artık tüm bilgiler response değişkeninin içindedir. ---
--- Sayfa içindeki içeriğe erişmek için response un içindeki content i kullanıyoruz ki bunu html_icerik değişkenine atamışız. ---
--- İşte bu noktada artık html içeriğimizi daha güzel göstermek için BeautfiulSoup modülünü kullanmaya başlıyoruz. ---
--- Aşağıda yine BeautifulSoup modülünü nasıl kullandığımıza dikkat edin. soup değişkenine atamışız ve burada ilk verdiğimiz değer response ile çektiğimiz html içeriği(yani değişkenimiz: html_icerik), ikinci değer ise bizim bu html i parçalamak istediğimizden dolayı html.parser şeklinde kodumuzu yazıyoruz. ---
--- Bu aşamada aşağıdaki ana iskelet kodlarımızı yazmış olduk aslında. ---
import requests
from bs4 import BeautifulSoup
url = "https://www.youtube.com/results?search_query=bursa"
response = requests.get(url)
html_icerik = response.content
soup = BeautifulSoup(html_icerik,"html.parser")
--- Artık BeautifulSoup içinde bulunan fonksiyonlarımızı kullanmaya başlayabiliriz. ---
--- Çalışmamızın devamında print(soup.prettify())
diyerek tüm html bilgilerini alabiliriz. Uzun çıktıları yazı da vermiyorum, kendiniz sonucu görebilirsiniz. ---
--- Aşağıdaki işlem ile find_all fonksiyonunu kullanarak web sayfasındaki a etiketlerini alt alta yazdırmış oluruz. ---
print(soup.find_all("a"))
for x in soup.find_all("a"):
print(x)
--- Başka bir örnek yapalım. for döngüsü ile find_all fonksiyonunu kullanıyoruz ve her bir a etiketi için .get fonksiyonunu kullanarak a etiketlerinin sadece href attributelerini almış oluruz. ---
for x in soup.find_all("a"):
print(x.get("href"))
print("*************************")
OUTPUT
/
*************************
/
*************************
https://www.youtube.com/about/
*************************
https://www.youtube.com/about/press/
*************************
https://www.youtube.com/about/copyright/
*************************
/t/contact_us/
*************************
https://www.youtube.com/creators/
*************************
https://www.youtube.com/ads/
*************************
https://developers.google.com/youtube
*************************
/t/terms
*************************
https://policies.google.com/privacy?hl=tr
*************************
https://www.youtube.com/about/policies/
*************************
https://www.youtube.com/howyoutubeworks?utm_campaign=ytgen&utm_source=ythp&utm_medium=LeftNav&utm_content=txt&u=https%3A%2F%2Fwww.youtube.com%2Fhowyoutubeworks%3Futm_source%3Dythp%26utm_medium%3DLeftNav%26utm_campaign%3Dytgen
*************************
/new
*************************
--- Yine yukarıdaki örnek gibi başka bir işlem yapalım. Bu sefer a etiketlerinin text ini alalım. ---
for x in soup.find_all("a"):
print(x.text)
print("***********************")
OUTPUT
***********************
***********************
Hakkında
***********************
Basın
***********************
Telif hakkı
***********************
Bize ulaşın
***********************
İçerik Üreticiler
***********************
Reklam verme
***********************
Geliştiriciler
***********************
Şartlar
***********************
Gizlilik
***********************
Politika ve Güvenlik
***********************
YouTube Nasıl Çalışıyor?
***********************
Yeni özellikleri deneyin
***********************
--- Son olarak bir başka örneğimiz de; belli bir class a sahip div etiketlerini çekmek olsun. Bunun için nasıl bir yol izlendiğine dikkat edin. ---
print(soup.find_all("div",{"class":"video-title text-shell skeleton-bg-color"}))
OUTPUT
[<div class="video-title text-shell skeleton-bg-color"></div>, <div class="video-title text-shell skeleton-bg-color"></div>, <div class="video-title text-shell skeleton-bg-color"></div>, <div class="video-title text-shell skel