Python Beautiful Soup kütüphanesi ile veri nasıl çekilir?

Pete Castiglione

Hectopat
Katılım
19 Mayıs 2020
Mesajlar
61
Çözümler
1
Öncelikle herkese merhaba. BTK Akademi üzerinden aldığım Python eğitim setinin sonlarına yaklaşmaktayım fakat şöyle bir sorunum var: Mesela Beautiful Soup kütüphanesinin syntaxını ve çalışma mantığını bir etiketi nasıl seçebileceğimi biliyorum fakat bir web sitesinden bir bilgi, veri çekeceğim zaman hangi etiketi seçmem gerektiğini bir türlü bulamıyorum, o etikete bir türlü ulaşamıyorum. Sonuç her zaman none. Basit sitelerden scraping yapabiliyorum fakat YouTube ve Hepsiburada gibi kodları biraz daha karmaşık sitelere gelince iş, işte o zaman sonuç her zaman none. Bana yardım edin lütfen. İnternetten bir veriyi çekmek için hangi etiketi seçmem gerektiğini nasıl anlayabilirim?
 
Örnek olarak kod atarsan yardımcı olabiliriz. Mesela ne yapıyorsun da none döndürüyor?
 
Son düzenleme:
Örnek olarak kod atarsan yardımcı olabiliriz. Mesela ne yapıyorsun da none döndürüyor?

Örneğin YouTube anasayfasından video başlıklarını seçmek istiyorum diyelim ve şöyle bir kod yazdım(aşağıda). Burada id = content olan elemente ulaşamıyorum ya ben bu elemente ulaşmak için sırasıyla hangi elementleri seçmem gerektiğini nereden anlayabilirim bir yöntemi falan mı var bilmediğim?
 

Dosya Ekleri

  • resim_2021-08-29_220845.png
    resim_2021-08-29_220845.png
    17,7 KB · Görüntüleme: 78
Örneğin YouTube anasayfasından video başlıklarını seçmek istiyorum diyelim ve şöyle bir kod yazdım(aşağıda). Burada ID = content olan elemente ulaşamıyorum ya ben bu elemente ulaşmak için sırasıyla hangi elementleri seçmem gerektiğini nereden anlayabilirim bir yöntemi falan mı var bilmediğim?

Çok hakim değilim ancak bildiğim kadarıyla YouTube sayfa kaynağı çogunlukla JavaScript ve çok karmaşık. Bu yüzden html.parser işlevsiz kalıyor olabilir.
html.parser yerine 'lxml','html5lib','lxml-xml' kullanılabilir. Ama sonucun değişeceğini sanmıyorum. Alternatif olarak selenium kullanabilirsin.
Ek olarak Problem extracting Youtube search results
 
Son düzenleme:
Çok hakim değilim ancak bildiğim kadarıyla YouTube sayfa kaynağı çogunlukla JavaScript ve çok karmaşık. Bu yüzden HTML. Parser işlevsiz kalıyor olabilir.
HTML. Parser yerine 'lxml','HTML5lib','lxml-XML' kullanılabilir. Ama sonucun değişeceğini sanmıyorum. Alternatif olarak selenium kullanabilirsin.
Ek olarak Problem extracting Youtube search results

Teşekkürler fakat ben genel olarak Hepsiburada'dan falan da bazı kodlara erişmek için örnek veriyorum ID = device-price-1 olan div i istiyorum ya ona direk ulaşmaya çalıştığımda none veriyor o etiketi seçerken mesela body > div > div diye giden bir sırayla dizilmiş sonuçta iç içe buna ulaşırken tek tek üstündeki tüm etiketleri mi seçeceğim tam anlatamıyorum kusura bakmayın nasıl anlatacağımı bilemiyorum.
 
Teşekkürler fakat ben genel olarak Hepsiburada'dan falan da bazı kodlara erişmek için örnek veriyorum ID = device-price-1 olan div i istiyorum ya ona direk ulaşmaya çalıştığımda none veriyor o etiketi seçerken mesela body > div > div diye giden bir sırayla dizilmiş sonuçta iç içe buna ulaşırken tek tek üstündeki tüm etiketleri mi seçeceğim tam anlatamıyorum kusura bakmayın nasıl anlatacağımı bilemiyorum.
Hepsiburada bana kaynak kodlarına erişim izni vermiyor. status_code = 403 olarak gözüküyor. O yüzden işlem yapamıyorum.
 
Hepsiburada bana kaynak kodlarına erişim izni vermiyor. Status_code = 403 olarak gözüküyor. O yüzden işlem yapamıyorum.

Büyük ihtimal status code ile erişim almak gerekli.
Hepsiburada bana kaynak kodlarına erişim izni vermiyor. Status_code = 403 olarak gözüküyor. O yüzden işlem yapamıyorum.

Büyük ihtimal status code ile erişim almak gerekli.

Büyük ihtimal status code ile erişim almak gerekli.

Peki sorumu söyle değiştirmek istiyorum hangi siteyi ne ile parse edeceğimi anlamanın bir yolu var mı?
 
Büyük ihtimal status code ile erişim almak gerekli.


Büyük ihtimal status code ile erişim almak gerekli.



Peki sorumu söyle değiştirmek istiyorum hangi siteyi ne ile parse edeceğimi anlamanın bir yolu var mı?
Malesef o kadar bilgi sahibi değilim.
Kod:
import requests
from bs4 import BeautifulSoup as bs
r = requests.get('https://www.gaming.gen.tr/kategori/hazir-sistemler/')
soup = bs(r.content, 'html.parser')
products = soup.find_all("a",attrs={"class": "woocommerce-LoopProduct-link woocommerce-loop-product__link"})
for product in products:
    print(product.h2.text)
    print((str(product.find("span", attrs={"class": "price"}).text).split("₺")[1]))
    print('--'*50)

Bu koda bir bak istersen sitedeki tüm hazır sistemleri listeledim. Div>div>div>div>main>div ayıklamadan ulaşabildim. Sonrasında ihtiyacım olan ismi, fiyatı, indirimi, önceki fiyatı vs. rahatça görebiliyorum.
 
Maalesef o kadar bilgi sahibi değilim.
Kod:
import requests.
from bs4 import BeautifulSoup as bs.
r = requests.get('https://www.gaming.gen.tr/kategori/hazir-sistemler/')
soup = bs(r.content, 'html.parser')
products = soup.find_all("a",attrs={"class": "woocommerce-LoopProduct-link woocommerce-loop-product__link"})
for product in products:
 print(product.h2.text)
 print((str(product.find("span", attrs={"class": "price"}).text).split("₺")[1]))
 print('--'*50)

Bu koda bir bak istersen sitedeki tüm hazır sistemleri listeledim. Sonrasında ihtiyacım olan ismi, fiyatı, indirimi, önceki fiyatı vs. rahatça ulaşabiliyorum.

Teşekkür ederim inceliyim biraz ve pratik yapayım başka sitelerde deneyeyim lxml ile parse etmeyi denerim belki de.
 

Yeni konular

Geri
Yukarı