Split eine kommagetrennte Liste mit Links mit beautifulsoup
-
11-09-2019 - |
Frage
Ich habe eine durch Kommata getrennte Liste in einer Tabellenzelle in einem HTML-Dokument erhalten, aber einige Elemente in der Liste verknüpft sind:
<table>
<tr>
<td>Names</td>
<td>Fred, John, Barry, <a href="http://www.example.com/">Roger</a>, James</td>
</tr>
</table>
Ich habe schöne Suppe wurde mit dem HTML zu analysieren, und ich kann auf den Tisch bekommen, aber was ist der beste Weg, es zu spalten und eine Datenstruktur zurückkehrt grob wie:
[
{'name':'Fred'},
{'name':'John'},
{'name':'Barry'},
{'name':'Roger', 'url':'http://www.example.com/'},
{'name':'James'},
]
Lösung
Dies ist eine Möglichkeit, Sie könnte es tun:
import BeautifulSoup
soup = BeautifulSoup.BeautifulSoup('''<table>
<tr>
<td>Names</td>
<td>Fred, John, Barry, <a href="http://www.example.com/">Roger</a>, James</td>
</tr>
</table>''')
result = []
for tag in soup.table.findAll('td')[1]:
if isinstance(tag, BeautifulSoup.NavigableString):
for name in tag.string.split(','):
name = name.strip()
if name:
result.append({ 'name': name })
else:
result.append({ 'name': tag.string.strip(), 'url': tag["href"] })
print result
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow