将HTML转换为纯文本,同时保留换行符

时间:2015-01-13 13:27:20

标签: python html beautifulsoup

我在Python中使用Beautiful Soup尝试将一些相当混乱的HTML转换为纯文本,同时保留HTML中的一些格式,特别是换行符。

以下是一个例子:

from bs4 import BeautifulSoup

html_input = '''
<body>
<p>Full
Name:
John Doe</p>
Phone: 01234123123<br />
Note: This
is a 
test message<br>
It should be ignored.
</body>
'''

message_body_plain = BeautifulSoup(html_input.replace('\n', '').replace('\r', ''))
print (message_body_plain.get_text())

有时我得到的HTML有换行符而不是空格(请参阅上面的“全名”),有时却没有。我已经尝试取出所有的换行符,并用换行符文字替换HTML换行符,但是当我遇到以我没有考虑过的方式编写的HTML换行符时,这会中断。当然有一个解析器为我做这个吗?

这是我的首选输出:

Full Name: John Doe
Phone: 01234123123
Note: This is a test message
It should be ignored.

请注意HTML标记中唯一的换行符。有谁知道实现我想要的最佳方式?

1 个答案:

答案 0 :(得分:0)

在BS内停留也可以尝试

soup = BeautifulSoup(html_input , "html.parser")

for elem in soup.find_all(["a", "p", "div", "h3", "br"]):
            elem.replace_with(elem.text + "\n\n")