版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/warrah/article/details/84566860
有人建议改造一下mhtifier.py就可以解析mht格式文件,它的示例没有告诉我,怎么验证。而且我改造也失败了,可能是我的水平有限。
Python :解析 word 文档(前程无忧简历),这篇文章的作者,告诉我们,51job的简历格式是mht格式的,虽然下载文件后缀是doc的。
python3通过文件头判断文件类型,从这篇文章的代码,可以获取文件的真实格式,mht格式与eml格式差不多,网上说可以通过解析邮件的方式,去解析mht,于是我按照这个思路去探索。
java将mht转换为html格式文件,可以参考poi读取word简历(伪word格式的doc文件 )提取文本内容报错,他的代码我没有验证过,
java写法可以参考java工具类mht转html格式文件 及简单的HTML解析,这个我验证过,是可以解析的
php也有对应的办法,例如php解析mht文件转换成html那么python怎么做呢?
Chilkat号称可以处理,但是他是付费软件,chilkat破解,而且说明文档写的也很挫,谷歌上的资料也不多。思来想去,真想放弃了使用python的办法。
不过想了想,既然mht格式就是eml,那么使用解析eml的方式去解析eml,不过就可以了。
import email
import mimetypes
import os
def parse(file_name):
mht = open(file_name,'r')
msg = email.message_from_file(mht)
mht.close()
file_path = r'F:\test\files'
for part in msg.walk():
if part.get_content_maintype() == 'multipart':
continue
filename = part.get_filename()
if not filename:
ext = mimetypes.guess_extension(part.get_content_type())
try:
fp = open(os.path.join(file_path,'test'+ext),'wb')
fp.write(part.get_payload(decode=True))
fp.close()
except Exception as e:
print(e)
if __name__ == '__main__':
file_name=r'F:\123.doc'
parse(file_name)