Python-beautifulsoup - erste input-Wert
Habe ich viele Zeilen wie diese:
<tr>
<td>100</td>
<td>200</td>
<td><input type="radio" value="123599"></td>
</tr>
Durchlaufen mit:
table = BeautifulSoup(response).find(id="sometable") # Make soup.
for row in table.find_all("tr")[1:]: # Find rows.
cells = row.find_all("td") # Find cells.
points = int(cells[0].get_text())
gold = int(cells[1].get_text())
id = cells[2].input['value']
print id
Fehler:
File "./script.py", line XX, in <module>
id = cells[2].input['value']
TypeError: 'NoneType' object has no attribute '__getitem__'
Wie kann ich den input-Wert? Ich don ' T wollen, verwenden Sie regexp.
Es sieht aus wie mindestens eine Ihrer Zeilen, es gibt keine input-tag in der Dritten Zelle. Bitte geben Sie die gesamte markup, oder fangen Sie den Fehler und drucken die Zeile.
BeautifulSoup ist bekanntlich zerbrechlich. Bessere Nutzung lxml oder lxml.html.
Du hast Recht, ich vermisse, dass. Es gibt da auch eine Zeile ohne input-tag. Ich danke Ihnen sehr.
BeautifulSoup ist bekanntlich zerbrechlich. Bessere Nutzung lxml oder lxml.html.
Du hast Recht, ich vermisse, dass. Es gibt da auch eine Zeile ohne input-tag. Ich danke Ihnen sehr.
InformationsquelleAutor Mateusz Jagiełło | 2012-07-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
soup.find('input', {'name': 'abc'}).get('value')
InformationsquelleAutor
Wollen Sie die <input> - element innerhalb der Zelle, so dass Sie verwenden sollten, finden/find_all auf die Zelle wie diese:
Mit Zeile.find("input") statt cells[2] gibt den gleichen Fehler. Zellen[2] kann nicht gesucht werden, weil es eine Liste.
Ah, das wusste ich nicht, danke.
InformationsquelleAutor