Python:将HTML片段分离为段落

3 投票
4 回答
1209 浏览
提问于 2025-04-15 19:22

我有一段包含段落的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 个回答

0

xml.etree(标准库)或者lxml.etree(增强版)让这个事情变得很简单,不过我记不清具体的写法,所以可能得不到答案的认可。我总是把它和类似的库搞混,每次都得重新查一下。

2

使用 lxml.html 来解析HTML,让它变成你想要的样子。这其实和那些推荐使用BeautifulSoup的人给出的建议差不多,只不过 lxml 还在积极更新,而BeautifulSoup的更新速度已经慢下来了。

5

如果你的字符串只是包含一些段落,你可以用一个精心设计的正则表达式和 re.split() 来处理。不过,如果你的字符串是更复杂的HTML,或者不是总是有效的HTML,那你可能需要看看 BeautifulSoup 这个工具。

使用方法如下:

from BeautifulSoup import BeautifulSoup 

soup = BeautifulSoup(some_html)

paragraphs = list(unicode(x) for x in soup.findAll('p'))

撰写回答