原来的代码是参考“Recipe 12.11. Using MSHTML to Parse XML or HTML”,利用htmlfile提取文本。
将当前目录下的所有html文件转换为text文件。
def extractHtmlFile(htmlFilePath): ’’’Extract html text and save to text file. ’’’ htmlData = file(htmlFilePath, ’r’).read() import win32com.client html = win32com.client.Dispatch(’htmlfile’) html.writeln(htmlData) text = html.body.innerText.encode(’gbk’, ’ignore’) |
但是发现MSHTML解析文件可能会出错,造成文本提取失败。
jigloo经过对10W+个html文件的测试,得出结论,htmlfile的容错比InternetExplorer.Application要差很多。
原文见:http://groups.google.com/group/python-cn/msg/c9221764bcafbc21
他的代码大致如下,IE使用稍烦:
#!/usr/bin/env python import sys, os, re, codecs class htmlfile: def __del__(self): def __getdocument(self, filename): if __name__ == ’__main__’: |
对于我的简单任务,这就足够了。
有一个问题,如果有资源管理器打开着,运行这段代码会关闭资源管理器,并出错退出。比较奇怪,但应该不难解决,可能是IE控件的使用上还有问题。
self.__ie.Document.close() File \"C:\\Python25\\Lib\\site-packages\\win32com\\client\\dynamic.py\", line 496, in __getattr__ raise AttributeError, \"%s.%s\" % (self._username_, attr) AttributeError: Document.close |