İçeriğe geç

BeautifulSoup Örnek Uygulama (gittigidiyor ürün bilgisi çekme)

Öğrendikçe daha keyifli hale gelen BeautifulSoup kütüphanesi ile gittigidiyor.com üzerinden arama yaparak ürün fiyat ve bilgilerini listeledim. Arama kısmına sadece ekran kartı yazdım ve arama yaptım.

from urllib.request import urlopen as req
from bs4 import BeautifulSoup as soup
my_url = "https://www.gittigidiyor.com/bilgisayar-bilesenleri/ekran-grafik-karti?k=ekran%20kart%C4%B1&qm=1"
uClient = req(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html,"html.parser")

Bu kısım bir önceki yazımda anlattığım standart bağlantının kurulması ve kaynak kodun BeautifulSoup kütüphanesine aktarılması işlemi.

containers = page_soup.findAll("li",{"class":"gg-uw-6 gg-w-8 gg-d-8 gg-t-8 gg-m-24 gg-mw-12 catalog-seem-cell"})

Ürünler “gg-uw-6 gg-w-8 gg-d-8 gg-t-8 gg-m-24 gg-mw-12 catalog-seem-cell” class ı na sahip li ler içerisinde listelenmekte ve bir sayfada 48 adet ürün gösterilmekte.

ben findAll() fonksiyonu ile class ismini girerek bu class a ulaştım. Bunu da containers  adında bir değişkene aktardım.

Çalışma yaparken container = containers[0] diyerek ilk li ye ulaştım. Çünkü verileri for döngüsü ile listeleyeceğimizden öncelikle ilk ürünün bilgilerine ulaşmak diğerlerini listelemek için bize yeterli.

daha sonra  “container.a.div.div.div.div.h3.span.text” diyerek ilk ürünün ismine ulaştım.

ben fiyat bilgisi ve ürün ismini istiyorum. Ürünün fiyat bilgisine “container.a.div.div.select(“div”)[2].p.text.replace(“\n”,””)” bu şekilde ulaştım. burada ulaştığım çıktı da replace fonksiyonu ile düzeltme yaptım. En son hali olan aşağıda verilen kodda da boşluklar için düzenleme yaparak en temiz yazılmış halini elde ettim.

daha sonra for container in containers diyerek döngüye başladım ve listelenen 48 adet ürünün fiyat ve ürün ismi bilgisini yazdırdım.

for container in containers:


    urunadi = container.a.div.div.div.div.h3.span.text
    fiyat = container.a.div.div.select("div")[2].p.text.replace("\n","")
    fiyat = fiyat.replace("                    "," ")
    fiyat = fiyat.rstrip()
    fiyat = fiyat.lstrip()

    print("fiyat: " + fiyat + "  Urunadı: " + urunadi + "\n")

Bu sadece öğrendiklerimi unutmamak adına yazdığım bir yazıdır. Yazım hatalarım olabilir.  Ben bu işlemleri yaparken türkçe kaynak sıkıntısı çektim. Herkes standart olan şeylerden bahsetmiş buda örnek olsun diye buraya yazmak istedim.

Kodların tamamı için tıklayınız.

Tarih:python