تقسيم قائمة مفصولة بفواصل مع روابط مع مجموعة جميلة
-
11-09-2019 - |
سؤال
لدي قائمة مفصولة بفواصل في خلية جدول في مستند HTML، لكن بعض العناصر الموجودة في القائمة مرتبطة:
<table>
<tr>
<td>Names</td>
<td>Fred, John, Barry, <a href="http://www.example.com/">Roger</a>, James</td>
</tr>
</table>
لقد كنت أستخدم الحساء الجميل لتحليل HTML، ويمكنني الوصول إلى الطاولة، ولكن ما هي أفضل طريقة لتقسيمها وإرجاع هيكل البيانات تقريبا مثل:
[
{'name':'Fred'},
{'name':'John'},
{'name':'Barry'},
{'name':'Roger', 'url':'http://www.example.com/'},
{'name':'James'},
]
المحلول
هذه طريقة واحدة يمكنك القيام بذلك:
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
لا تنتمي إلى StackOverflow