У меня есть несколько надежных HTML файлов с ошибочно разделенными списками, как в примере ниже.
<ul>
<li>Foo</li>
</ul>
<ul>
<li>Bar</li>
</ul>
<p>Bla bla bla</p>
<ul>
<li>Foo</li>
</ul>
<ul>
<li>Bar</li>
</ul>
<ul>
<li>Baz</li>
</ul>
Мне нужно объединить каждую серию списков в один список. Но только последовательные списки , поэтому первый список (до <p>
) не смешивается со вторым (после <p>
).
<ul>
<li>Foo</li>
<li>Bar</li>
</ul>
<p>Bla bla bla</p>
<ul>
<li>Foo</li>
<li>Bar</li>
<li>Baz</li>
</ul>
Вот мой Python код:
for tag in soup.find_all('ul'):
previous_tag_list = tag.find_previous_sibling(tag.name)
previous_tag = tag.find_previous().find_previous()
if previous_tag_list is not None and previous_tag_list == previous_tag:
for tag1 in tag.find_all('li'):
previous_tag.append(tag1)
tag.decompose()
Для каждого <ul>
он находит предыдущий <ul>
и объединяет их вместе. Итак, я получаю следующее:
<ul>
<li>Foo</li>
<li>Bar</li>
</ul>
<p>Bla bla bla</p>
<ul>
<li>Foo</li>
<li>Bar</li>
</ul>
<ul>
<li>Baz</li>
</ul>
это не то, что я ищу.