Если у меня есть вложенный список HTML (неупорядоченный), который выглядит следующим образом:
<<ul style="">
<li class="jstree-last jstree-open" id="wfo-7000000004">
<ins class="jstree-icon"> </ins>
<a class="" href="taxon/wfo-7000000004">
<ins class="jstree-icon"> </ins>
Acoraceae
</a>
<ul style="">
<li class="jstree-last jstree-open" id="wfo-4000000350">
<ins class="jstree-icon"> </ins>
<a class="" href="taxon/wfo-4000000350">
<ins class="jstree-icon"> </ins>
Acorus
</a>
<ul style="">
<li class="jstree-open" id="wfo-0000350733">
<ins class="jstree-icon"> </ins>
<a class="" href="taxon/wfo-0000350733">
<ins class="jstree-icon"> </ins>
Acorus calamus
</a>
<ul style="">
<li class="jstree-leaf" id="wfo-0000350841">
<ins class="jstree-icon"> </ins>
<a class="" href="taxon/wfo-0000350841">
<ins class="jstree-icon"> </ins>
Acorus calamus var. americanus
</a>
</li>
<li class="jstree-last jstree-leaf" id="wfo-0000350949">
<ins class="jstree-icon"> </ins>
<a class="" href="taxon/wfo-0000350949">
<ins class="jstree-icon"> </ins>
Acorus calamus var. angustatus
</a>
</li>
</ul>
</li>
<li class="jstree-last jstree-leaf" id="wfo-0000352676">
<ins class="jstree-icon"> </ins>
<a class="" href="taxon/wfo-0000352676">
<ins class="jstree-icon"> </ins>
Acorus gramineus
</a>
</li>
</ul>
</li>
</ul>
</li>
</ul>
Как мне сформировать из Python вложенный словарь? Например:
{
Acorales: {
Acoraceae: {
Acorus: {
Acoruscalamus: [
Acoruscalamusvar.americanus,
Acoruscalamusvar.angustatus
],
Acorusgramineus
}
}
}
}
Я предполагаю, что библиотеки типа Beautiful Soup и HTML Parser имеют средства для этого (с циклами for в python), но я не смог этого понять. Спасибо за любую помощь!
Я пробовал так:
def create_dic(soup):
return {li.a.get_text().replace("\xa0", ""): create_dic(li)
for ul in soup('ul', recursive=False)
for li in ul('li', recursive=False)}
Тем не менее, выходные данные выглядят так (где Acorus calamus var. Americanus и Acorus calamus var. Angustatus должны быть в списке, а Acorus gramineus не словарь):
{'Acorales': {'Acoraceae': {'Acorus': {'Acorus calamus': {'Acorus calamus var. americanus': {},
'Acorus calamus var. angustatus': {}},
'Acorus gramineus': {}}}}}