«результат» здесь выглядит примерно так:
<td align="left" class="body" width="2%"> </td>
<td align="left" class="body" valign="top" width="24%">Kingdom</td>
<td class="datafield" valign="top" width="71%"><a href="SingleRpt?search_topic=TSN&search_value=202423">Animalia</a>
– Animal, animaux, animals</td>
<td class="body" width="5%"> </td>
Когда вы используете .get_text (), он превращается в
'\xa0KingdomAnimalia\xa0\n – Animal, animaux, animals\n\xa0'
Так что при сопоставлении вы должны использовать свой старый«результат» и разделить столбцы вверх.Например:
if re.match(pattern, text)) :
pieces = result.findAll('td')
, а затем использовать эти кусочки для поиска вашей информации, например
for p in pieces:
print(p.get_text())
Конечно, вы не можете ожидать, что он вернет словарь, когда вы работаете со строкамии не занимаемся составлением карт в первую очередь.Таким образом, вы должны создать его перед запуском цикла for, назовем его dictionary
if re.match(pattern, text):
p = result.findAll('td')
rank = p[1].get_text().strip()
taxon = p[2].get_text().split('\xa0')[0]
dictionary[rank] = taxon
Это даст вам словарь, который вы ищете