我在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标记中唯一的换行符。有谁知道实现我想要的最佳方式?
答案 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")