Python,另存为mht

时间:2016-12-06 23:20:01

标签: python-3.4

我可以打开一个网页,没问题。我可以保存网页...作为HTML,没问题。我需要将网页保存为mht所以我可以获取所有隐藏的html而不保存为mht。在研究中我完全没有提到如何使用python保存。就像我上面说的那样,我可以尝试将其保存为mht文件,使用标准编码保存为html,但这根本不起作用......并不惊讶它也不起作用,但它值得一试。< / p>

url = 'https://www.thewebsite.com'
html = urllib.request.urlopen(url).read()

m = open('websitetest.mht', 'w')
m.write(str(html))
m.close()

我正在尝试保存的网站会在保存为mht时遇到“隐藏代码”,但在保存为html时则不会。因此,为什么我要保存为mht所以我得到了所有代码,然后可以通过代码来完成编译数据库所需的内容。

2 个答案:

答案 0 :(得分:0)

在Python 2.7中编写了一个非常方便的Github项目(您需要进行简单的修改以使其与Python 3.4兼容)。该项目包含打包/解包MHT文件的代码。我认为这就是你要找的东西:

Un/packs an MHT (MHTML) archive into/from separate files, writing/reading them in directories to match their Content-Location.

答案 1 :(得分:0)

最近遇到同一问题, 我想将html页面转换为mht格式。

关注Tim Golden的Python知识,并能够使用win32com实现它。 http://timgolden.me.uk/python/win32_how_do_i/create-an-mhtml-archive.html

import win32com.client as win32

URL = r'C:\WorkSpace\chetan_index.html'  # issues found 1> One while using local files, pass the path in url format like file://directory01/directory02/index.html with %20 formating for special characters
                                         #              2> Also same to be followed for files reffered internally inside html file i.e. src="file://reference/directory01/smiley.png"
                                         #              3> Rare issue, if alt tag is found with src, images are not embedded into mht coreectly, trying poping alt tag from web page and then call CreateMHTMLBody

message = win32.gencache.EnsureDispatch('CDO.Message')
message.CreateMHTMLBody(URL, 0)  # 0 - suppress none , download all images and others
stream = win32.gencache.EnsureDispatch(message.GetStream())
stream.SaveToFile(r'C:\temp\saved_mht.mht', 2)  # 2, for overwrite existing file, 1 for not to overwrite
stream.Close()