Очевидно, что теги <p>
необходимо закрывать только в том случае, если в абзаце будет разрешен следующий тег, но его не следует включать.
# case 1
<div>
<p>Sentence 1.
<span>Interjection!<span>
<p>Sentence 2.
</div>
Это закончилось бы двумя параграфами (я думаю), это было бы так, как если бы вы написали:
# case 2
<div>
<p>Sentence 1. <span>Interjection!<span></p>
<p>Sentence 2.</p>
</div>
В моем случае я бы хотел, чтобы BeautifulSoup проанализировал абзац так, как того требует стандарт. Но, в частности, в приведенном ниже примере (случай 3) я хотел бы только «Предложение 1.», оставив заголовок вне него.
# case 3
<div>
<p>Sentence 1.
<h2>Interjection!<h2>
<p>Sentence 2.
</div>
В настоящее время BeautifulSoup продолжает анализировать (как в случае 4), но это не то, что я вижу при просмотре такого сайта в Интернете (с использованием chrome).
# case 4 (bs4 currently)
<div>
<p>Sentence 1. <h2>Interjection!<h2> <p>Sentence 2.
</div>
</p>
</p>
Я использую html.parser
. Может ли здесь помочь другой парсер?