Ich benutze BeautifulSoup und analysiere einige HTMLs.
Ich erhalte bestimmte Daten aus jedem HTML-Code (mit for-Schleife) und füge diese Daten einer bestimmten Liste hinzu.
Das Problem ist, dass einige der HTMLs ein anderes Format haben (und sie nicht die Daten haben, die ich in ihnen haben möchte) .
Also habe ich versucht, die Ausnahmebehandlung zu verwenden und null
der Liste einen Mehrwert hinzuzufügen (ich sollte dies tun, da die Reihenfolge der Daten wichtig ist.)
Zum Beispiel habe ich einen Code wie:
soup = BeautifulSoup(links)
dlist = soup.findAll('dd', 'title')
# I'm trying to find content between <dd class='title'> and </dd>
gotdata = dlist[1]
# and what i want is the 2nd content of those
newlist.append(gotdata)
# and I add that to a newlist
und einige der Links haben keine <dd class='title'>
, also möchte ich null
stattdessen der Liste einen String hinzufügen .
Der Fehler erscheint:
list index out of range.
Was ich versucht habe, ist, einige Zeilen wie diese hinzuzufügen:
if not dlist[1]:
newlist.append('null')
continue
Aber es klappt nicht. Es zeigt immer noch Fehler:
list index out of range.
Was soll ich dagegen tun? Soll ich die Ausnahmebehandlung verwenden? oder gibt es einen einfacheren weg?
Irgendwelche Vorschläge? Jede Hilfe wäre wirklich toll!
quelle
None
es eindeutig sauberer ist, will das OP'null'
in diesem Fall.Sie haben zwei Möglichkeiten; Behandeln Sie entweder die Ausnahme oder testen Sie die Länge:
oder
Verwenden Sie das erste, wenn häufig kein zweites Element vorhanden ist, das zweite, wenn manchmal kein zweites Element vorhanden ist.
quelle
Ein Ternär wird ausreichen. Veränderung:
zu
Dies ist eine kürzere Ausdrucksweise
quelle
Unter Bezugnahme auf ThiefMaster ♦ erhalten wir manchmal einen Fehler mit dem Wert '\ n' oder null und führen den für ValueError erforderlichen Wert aus:
Die Behandlung der Ausnahme ist der richtige Weg
quelle
quelle
für alle, die kürzer interessiert sind:
Für eine optimale Leistung empfehle ich jedoch die Verwendung von False anstelle von 'null'. Dann reicht ein einzeiliger Test aus:
quelle