Youtubedan videolar izleyerek veri çekmeye çalışıyorum ama migrosun sitesinden verileri çekemiyorum. Trendyol gibi başka siteleri denediğimde çekebildim. Migrosun neden çekemiyorum yanlış birşeyler mi yapıyorum.
Çekmeye çalıştığım yer resimde gösterdiğim yer ama En sondaki ürünler [ ] boş liste olarak geliyor.
sitenin içeriği javascript ile dolduğundan html içeriğini alamıyorsun. (kullandığın requests kütüphanesi javascript renderlayamıyor. kısacası gerçek bir tarayıcı gerekli.)
Hocam sizin paylaştığınızı inceledim 3 gün önce daha kapsamlı bir paylaşım yapmışsınız onu da inceledim. Üzerinde uğraştım ama en son uygulama “KeyError” veriyor.
Hatanın “for urun in jsonify[“searchInfo”]:” buradan olduğunu düşünerek “searcInfo” yerine “storeProductInfos” , “0” olarak da denedim gene hata alıyorum bunun sebebi ne olabilir ?
Ürün adı giriniz: sabun
Traceback (most recent call last):
File “C:\Users\ADMIN\PycharmProjects\vericekme\main.py”, line 32, in
data = Migros(urun_input).parse_urunler()
File “C:\Users\ADMIN\PycharmProjects\vericekme\main.py”, line 20, in parse_urunler
for urun in jsonify[“searchInfo”]:
KeyError: ‘searchInfo’
class Migros:
def init(self, urun_adi):
self.urun_adi = urun_adi
def get_urunler(self):
data = {
"q": self.urun_adi
}
r = requests.get("https://www.migros.com.tr/rest/search/screens/products", params=data)
return r.text
def parse_urunler(self):
urunler = self.get_urunler()
jsonify = json.loads(urunler)
results = []
for urun in jsonify["searchInfo"]:
result = {}
result["urun_adi"] = urun["name"]
result["urun_fiyati"] = urun["loyaltyPrice"]
result["urun_indirimli_fiyati"] = urun["salePrice"]
results.append(result)
return results
if name == “main”:
urun_input = input(“Ürün adı giriniz: “)
data = Migros(urun_input).parse_urunler()
print(”–SORGU SONUCU GELEN ÜRÜN BİLGİLERİ–”)
for i in data:
print(
f"URUN Adı: {i[‘urun_adi’]}\n Ürün Fiyatı: {i[‘urun_fiyati’]}\n ÜRÜN İndirimli Fiyatı: {i[‘urun_indirimli_fiyatı’]}")
Aramayı başarlı olarak döndürmesine rağmen verdiği yanıt boş buarada aldığın hatanın sebebi önce “data” nın içine girmen gerekiyo onun içinde “searchInfo”.
Neden boş bilgi döndürdüğünüde anlıyamadım belki migros bir şekilde engelliyordur