问题:使用 Python 将 html 转换为文本

我正在尝试使用 Python 将 html 块转换为文本。

输入:

<div class="body"><p><strong></strong></p>
<p><strong></strong>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Consectetuer adipiscing elit. <a href="http://example.com/" target="_blank" class="source">Some Link</a> Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Aenean massa.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p></div>

期望的输出:

我们很高兴欢迎您,客户服务提供商。 Aenean的好运需要痛苦。茉莉香块

随之而来的肥胖精英。一些 Link Aenean 的抽屉柜购买痛苦。埃涅斯质量

艾尼安马萨。 Aenean的好运需要痛苦。茉莉香块

我们很高兴欢迎您,客户服务提供商。 Aenean的好运需要痛苦。茉莉香块

随之而来的肥胖精英。埃涅斯五斗柜。埃涅斯质量

我尝试了html2text模块但没有取得多大成功:

#!/usr/bin/env python

import urllib2
import html2text
from BeautifulSoup import BeautifulSoup

soup = BeautifulSoup(urllib2.urlopen('http://example.com/page.html').read())

txt = soup.find('div', {'class' : 'body'})

print(html2text.html2text(txt))

txt对象生成上面的 html 块。我想将其转换为文本并在屏幕上打印。

解答

soup.get_text()输出你想要的:

from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
print(soup.get_text())

输出:

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Consectetuer adipiscing elit. Some Link Aenean commodo ligula eget dolor. Aenean massa
Aenean massa.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa

要保留换行符:

print(soup.get_text('\n'))

为了与您的示例相同,您可以用两个换行符替换换行符:

soup.get_text().replace('\n','\n\n')
Logo

学AI,认准AI Studio!GPU算力,限时免费领,邀请好友解锁更多惊喜福利 >>>

更多推荐