Python: разделение фрагментов HTML на абзацы - PullRequest
3 голосов
/ 17 февраля 2010

У меня есть фрагмент HTML, который содержит абзацы. (Я имею в виду p теги.) Я хочу разбить строку на разные абзацы. Например:

'''
<p class="my_class">Hello!</p>
<p>What's up?</p>
<p style="whatever: whatever;">Goodbye!</p>
'''

Должно стать:

['<p class="my_class">Hello!</p>',
 '<p>What's up?</p>'
 '<p style="whatever: whatever;">Goodbye!</p>']

Какой хороший способ подойти к этому?

Ответы [ 4 ]

5 голосов
/ 17 февраля 2010

Если ваша строка содержит только абзацы, вы можете избежать неприятного обращения с регулярным выражением и re.split(). Однако, если ваша строка является более сложным HTML или не всегда верным HTML, вы можете посмотреть на пакет BeautifulSoup .

Использование идет как:

from BeautifulSoup import BeautifulSoup 

soup = BeautifulSoup(some_html)

paragraphs = list(unicode(x) for x in soup.findAll('p'))
2 голосов
/ 17 февраля 2010

Используйте lxml.html, чтобы разобрать HTML-код в нужную форму. По сути, это тот же совет, что и людям, которые рекомендуют BeautifulSoup, за исключением того, что lxml все еще активно разрабатывается, а разработка BeatifulSoup замедляется.

0 голосов
/ 17 февраля 2010

xml.etree (std lib) или lxml.etree (расширенный) делают это легко, но я не собираюсь получать за это ответ, потому что я не помню точный синтаксис. Я продолжаю смешивать его с похожими пакетами, и мне приходится каждый раз искать его заново.

0 голосов
/ 17 февраля 2010

Используйте BeautifulSoup для разбора HTML-кода и перебора абзацев.

...