Heim >Backend-Entwicklung >Python-Tutorial >So beheben Sie TypeError: Listenindizes müssen Ganzzahlen sein, nicht str, beim Extrahieren von Attributwerten mit BeautifulSoup?

So beheben Sie TypeError: Listenindizes müssen Ganzzahlen sein, nicht str, beim Extrahieren von Attributwerten mit BeautifulSoup?

Linda Hamilton
Linda HamiltonOriginal
2024-12-24 17:27:14478Durchsuche

How to Resolve TypeError: list indices must be integers, not str, When Extracting Attribute Values with BeautifulSoup?

Attributwerte mit BeautifulSoup extrahieren: TypeError in Python auflösen

Auf der Suche nach dem Extrahieren des Inhalts eines einzelnen „Wert“-Attributs aus einem Wenn Sie auf einer Webseite ein bestimmtes „Eingabe“-Tag verwenden, haben Sie sich entschieden, BeautifulSoup aufzurufen. Mit dem folgenden Code haben Sie Ihre Mission begonnen:

import urllib
f = urllib.urlopen("http://58.68.130.147")
s = f.read()
f.close()

from BeautifulSoup import BeautifulStoneSoup
soup = BeautifulStoneSoup(s)

inputTag = soup.findAll(attrs={"name": "stainfo"})

output = inputTag['value']

print str(output)

Ihr Unterfangen wurde jedoch durch den rätselhaften TypeError vereitelt: Listenindizes müssen Ganzzahlen sein, nicht str. Verzweiflung schlich sich ein, als Sie Trost in der BeautifulSoup-Dokumentation suchten, aber ihre Feinheiten verwirrten Sie. Erlauben Sie uns, Licht ins Dunkel dieses Rätsels zu bringen.

Die Methode find_all() gibt eine Liste aller übereinstimmenden Elemente zurück. In Ihrem Fall ist input_tag eine Liste, die wahrscheinlich nur ein Element enthält. Die folgende Zeile, „output = inputTag['value']“, versucht, auf den Wert des Wörterbuchs zuzugreifen, das dem ersten Element der Liste zugeordnet ist. Da der Listenindex eine Ganzzahl sein sollte, schlägt dieser Vorgang mit dem gemeldeten Fehler fehl.

Um das Problem zu beheben, haben Sie zwei Möglichkeiten:

Option 1: Auswahl des ersten Elements

Wählen Sie mit explizit das erste Element aus der Liste aus Indizierung:

input_tag = soup.find_all(attrs={"name": "stainfo"})
output = input_tag[0]['value']

Option 2: Verwenden der find()-Methode

Verwenden Sie die find()-Methode, die nur das erste passende Element zurückgibt:

input_tag = soup.find(attrs={"name": "stainfo"})
output = input_tag['value']

Durch die Implementierung eines dieser Ansätze können Sie den gewünschten Attributwert effektiv extrahieren und Ihre BeautifulSoup-Reise ohne weitere Hindernisse fortsetzen.

Das obige ist der detaillierte Inhalt vonSo beheben Sie TypeError: Listenindizes müssen Ganzzahlen sein, nicht str, beim Extrahieren von Attributwerten mit BeautifulSoup?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn