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
Freigeben: 2024-12-24 17:27:14
Original
474 Leute haben es durchsucht

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)
Nach dem Login kopieren

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']
Nach dem Login kopieren

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']
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage