Python:将HTML片段分隔为段落

时间:2010-02-16 22:21:56

标签: python html beautifulsoup lxml

我有一段包含段落的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 :(得分:5)

如果您的字符串只包含段落,那么您可以使用制作精良的正则表达式和re.split()。但是,如果您的字符串是更复杂的HTML,或者并非总是有效的HTML,那么您可能需要查看BeautifulSoup包。

用法如下:

from BeautifulSoup import BeautifulSoup 

soup = BeautifulSoup(some_html)

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

答案 1 :(得分:2)

使用lxml.html将HTML解析为所需的表单。这与推荐BeautifulSoup的人基本上是一样的建议,除了lxml仍然在积极开发和BeatifulSoup开发已经放缓。

答案 2 :(得分:0)

使用BeautifulSoup解析HTML并迭代段落。

答案 3 :(得分:0)

xml.etree(std lib)或lxml.etree(增强版)使这很容易,但我不会因此而得到答案,因为我不记得确切的语法。我一直把它和类似的包裹混在一起,每次都要重新查看。