Warum bekomme ich "'ResultSet' hat kein Attribut 'findAll'" mit BeautifulSoup in Python?

8

Also lerne ich langsam Python und versuche eine einfache Funktion zu erstellen, die Daten von der Highscore-Seite eines Online-Spiels zeichnet. Dies ist der Code von jemand anderem, den ich in eine Funktion umgeschrieben habe (was das Problem sein könnte), aber ich bekomme diesen Fehler. Hier ist der Code:

%Vor%

Vielen Dank im Voraus.

    
Alex 14.06.2009, 04:41
quelle

1 Antwort

19

Wow. Triptych stellte eine große Antwort zu einer verwandten Frage.

Wir können sehen, aus dem Sourcecode von BeautifulSoup , das ResultSet subclasses list .

In Ihrem Beispiel ist get_rows eine Instanz der ResultSet -Klasse von BS,
und da BS ResultSet subclasses list , das heißt get_rows ist eine Liste .

get_rows , als eine Instanz von ResultSet , hat nicht eine findAll -Methode implementiert; daher dein Fehler.
Was Triptych anders gemacht hat, ist iterate über diese Liste.
Triptychs Methode funktioniert, weil die Elemente in der get_rows -Liste Instanzen der Tag-Klasse von BS sind; Das hat eine findAll Methode.

Um den Code zu reparieren, könnten Sie also die letzten drei Zeilen Ihrer create Methode durch etwas wie das Folgende ersetzen:

%Vor%

Hinweis an Leonard Richardson: In keiner Weise beabsichtige ich, die Qualität Ihrer Arbeit zu verschlechtern, indem ich sie als BS bezeichne; -)

    
bernie 14.06.2009, 06:17
quelle

Tags und Links