Python: как получить все текстовые блоки для абзацев в xml / html - PullRequest
0 голосов
/ 07 ноября 2018

Конечно, это должно быть решено, и общая проблема:

У меня есть XML-представление HTML-страниц, которые содержат маркеры абзаца и новой строки (<p/>, <br/> или <p> .. </p>). Однако в истинном HTML-стиле маркеры абзаца используются непоследовательно и не покрывают весь текст на странице.

Например, XML может выглядеть так:

<html>some text<p>more text 1</p>text2<p/>text3<p>text4</p></html>

Есть ли способ использовать какой-нибудь синтаксический анализатор, чтобы легко получить все фрагменты текста внутри или разделить по границам абзаца?

Так что для приведенного выше XML это должен быть список

["some text","more text 1","text2","text3","text4"]

Для некоторого XML без маркера абзаца / новой строки внутри, это должен быть весь текст элемента html. Для этого:

<html>text 1<p/>text 2<br/>text 3</html>

это должно быть

["text 1", "text 2", "text 3"]

Каков наилучший подход для достижения этого, например, с помощью библиотека xml.etree (для этого у меня уже есть ElementTree) или любая другая библиотека, которая может обрабатывать XML или html в стиле xml?

Конечно, простые приведенные выше примеры могут быть решены "вручную" с использованием моего собственного кода синтаксического анализа, но фактический XML может содержать гораздо более сложный XML, поэтому преобразование в текст должно быть в состоянии справиться с этим должным образом.

...