如何在Python中将Word文档转换为非常简单的HTML?

13

时不时我会收到一个Word文档,需要将其显示为网页。目前我正在使用Django的flatpages通过获取MS Word生成的html内容来实现这一点。但生成的html非常混乱。有没有更好的方法可以使用Python生成非常简单的html来解决这个问题?

6个回答

6
一个好的解决方案是将文件上传到Google Docs并从中导出html版本。(应该有一个api可以做到这一点吧?)它可以进行许多"清理"操作;之后可以使用Beautiful Soup进行任何必要的进一步更改。它是地球上最强大、最优雅的html解析库。这是新闻公司的已知标准。

1
但是,您如何从Google文档中实现呢?我上传我的MSWord文档并选择转换选项 - 它会丢失所有图表。 - likejudo

4
我发现了这个网页:http://www.textfixer.com/html/convert-word-to-html.php。它可以将格式化文本转换为简单的HTML标记,保留粗体、斜体、链接和段落,但不会添加字体大小和字体样式的标签。这正是我需要节省时间的地方。

这太令人惊奇了!功能完全符合我的要求。 - Justin

3

我的超级简单的应用程序WordOff有一个API,可以清理从Word导出的HTML中的垃圾。您可以覆盖flatpages模型的保存方法,将HTML通过API传递第一次保存。像这样:

import urllib
import urllib2

def decruft(html):
    data = urllib.urlencode({'html' : html})
    req = urllib2.Request('http://wordoff.org/api/clean', data)
    response = urllib2.urlopen(req)
    return response.read()

def save(self, **kwargs):
    if not self.pk: # only de-cruft when content is first added
        self.content = decruft(self.content)
    super(FlatPage, self).save(**kwargs)

WordOff 在这方面做得相当不错。 - Steve Jalim
2
如果您想在本地使用Wordoff,可以下载该模块并使用其“superClean”方法以获得相同的结果:https://raw.github.com/tomdyson/wordoff/master/wordoff.py - Bala Clark
5
嗨,Tomd,WordOff.org已经过期了。 - fedmich

2

这取决于你要处理多少格式和图片。我会采取以下几种方法之一:

  • Google 文档: 可能是最接近原始格式且可用的 HTML。
  • Markdown: 放弃格式。将其粘贴到纯文本编辑器中,通过 Markdown 运行并手动修复其余部分。

1
我该如何从Google文档中获取HTML?是通过“下载为HTML”选项吗? - Thierry Lam
2
+1:Word Doc 文件非常难以处理。许多工具可以将它们转换,包括 Open Office。Google Docs 由于是 HTTP Web 服务,因此具有简单的 API。 - S.Lott
4
MS Word转换为HTML简直是恶魔。我的客户交给我一份95页的Word文档,里面包含数百个“旅游景点”,并说:“把它输入到数据库中应该很容易。” 呜呜!尽管我完成了任务并按小时收费100美元,但我认为在经历了这份痛苦之后我实际上是少开价了。这个HTML文件是我曾经遇到的最糟糕的。 - Peter Rowell

2
您也可以使用Abiword/wvWare将Word文档转换为XHTML,然后使用BeautifulSoup/ElementTree等进行预处理(如果需要的话)。在我的经验中,Abiword在转换Word文件并生成相对干净的XHTML文件方面做得相当不错。
我应该提到,Abiword可以在命令行上运行,因此很容易将其集成到自动化流程中。

2
Word 2010具有“另存为筛选的网页”的功能。这将消除Word插入的绝大部分HTML。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接