Python "NavigableString" hatası

The2ndSlimShady

Centipat
Katılım
30 Temmuz 2020
Mesajlar
269
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Arkadaşlar IMDb'nin en iyi 250 film listesinden veri çeken bir kod yazdım. Fakat sürekli çözemediğim bir hata veriyor..
Bu kod:

Python:
import requests.
from bs4 import BeautifulSoup.

imdburl = "https://www.imdb.com/chart/top"
r = requests.get(imdburl)
soup = BeautifulSoup(r.content,"html.parser")
gelen_veri = soup.find_all("table",{"class":"chart full-width"})
filmtablosu = (gelen_veri[0].contents) [len(gelen_veri[0].contents)-2]
filmtablosu.find_all("tr")

for film in filmtablosu:
film_başlık = film.find_all("td",{"class":"titlrColumn"})
film_isim = film_başlık[0].text.
film_isim = film_isim.replace("\n","")
print("************************")
print(film_isim)

Bu da hata:

Python:
AttributeError: 'NavigableString' object has no attribute 'find_all'
 
Son düzenleyen: Moderatör:
Python:
import requests
from bs4 import BeautifulSoup

imdburl = "https://www.imdb.com/chart/top"
r = requests.get(imdburl)
soup = BeautifulSoup(r.content,"html.parser")
gelen_veri = soup.find("table",{"class":"chart full-width"}).find("tbody",{"class":"lister-list"})
filmtablosu = gelen_veri.find_all("tr")

for film in filmtablosu:
    film_başlık = film.find("td",{"class":"titleColumn"})
    film_isim = film_başlık.a.text
    print(film_isim)

Öncelikle film_tablosu değişkeninde gelen_ veri değişkeninden dönen değerin ilk indexini neden almaya çalıştınız onu anlamadım ayrıca zaten html kodunun içeriğini BeautifulSoup'a göndermişsiniz, tekrardan contents yazmanıza gerek yok.
film_başlık değişkeninde class bölümünü yanlış yazmışsınız "titleColumn" olacak.
Ayrıca filmleri almak için tabloyu seçmeniz güzel fakat arama alanınız sadece filmleri kapsamıyor, tüm "tr" etiketlerini aldığınızda filmlerden farklı değerler geliyor. Neye ulaşmak istiyorsanız kapsama alanınızı mümkün olduğunca daraltın.
Kodda aldığınız hatada eriştiğiniz öge üzerinde find_all özelliği yok gibi bir hata döndürüyor.
Size önerim requests ve bs4 için öğrendiğiniz kaynakları tekrar okuyun ve çok alıştırma yapın.
Çalışmaya devam.👍
 
Son düzenleme:
Hocam kodu aslında ben kendi başıma yazmadım. Yazılım Bilimi Python Dersleri'nde vardı öğrenme amaçlı videoda ne yazıldıysa onları yazdım. HTML de bilmediğimden videoda table al dedi ben de table aldım. Bir de hocam sadece python için değil, kodları nasıl daha efektif kullanmayı öğrenebilirim? Ufak şeyler yazınca çalışıyor ama biraz uzun kodlar yazınca bir ton hata alıyorum. Bunu nasıl engelleyebilirim?
 
Hocam kodu aslında ben kendi başıma yazmadım. Yazılım bilimi Python dersleri'nde vardı öğrenme amaçlı videoda ne yazıldıysa onları yazdım. HTML'de bilmediğimden videoda table al dedi ben de table aldım. Bir de hocam sadece Python için değil, kodları nasıl daha efektif kullanmayı öğrenebilirim? Ufak şeyler yazınca çalışıyor ama biraz uzun kodlar yazınca bir ton hata alıyorum. Bunu nasıl engelleyebilirim?

Sürekli kod yazarak, bir şeyi bir tekrarda mı daha iyi öğrenirsiniz, bin tekrarda mı? Hata almanız gayet normal, zaten bu hatalar olacak ki siz daha iyi kavrayacaksınız. Ayrıca daha az hata yapmak için yazdığınız kodu farklı açılardan düşünün, kodun sadece çalışan tarafını değil de size hata döndürebilecek taraflarını düşünürseniz hem hataları yakalarsınız hem de daha efektif kod yazmış olursunuz.
 

Geri
Yukarı