【发布时间】:2015-03-11 11:27:03
【问题描述】:
我在 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 标记的。有谁知道实现我想要的最佳方式?
【问题讨论】:
-
看看这个帖子stackoverflow.com/questions/13337528/…。我没有标记为重复(尽管我应该这样做),因为
html2text是第 3 方库,它不附带 vanilla Python。但它是一个很好的库,可以满足您的需求。 -
谢谢。这确实完全符合我的要求。我不知道为什么我没有先找到它。也许我太专注于 Beautiful Soup,它显然(主要)是一个解析器。随意标记为骗子!
标签: python html beautifulsoup