离线html文件及资源文件夹转换为单个mhtml文件
warning:
这篇文章距离上次修改已过189天,其中的内容可能已经有所变动。
要将离线的HTML文件及其资源文件夹转换为单个MHTML文件,可以使用以下Python代码示例:
import os
import shutil
from pathlib import Path
def convert_to_mhtml(html_file, output_mhtml_file, resources_dir):
# 确保HTML文件的路径是绝对路径
html_file_path = Path(html_file).resolve()
output_mhtml_path = Path(output_mhtml_file).resolve()
resources_dir_path = Path(resources_dir).resolve()
# 创建资源的临时拷贝,并将所有资源的路径改为相对于资源文件夹的路径
temp_resources_dir = output_mhtml_path.parent / 'resources'
shutil.copytree(resources_dir_path, temp_resources_dir)
relative_resources_dir = os.path.relpath(temp_resources_dir, output_mhtml_path.parent)
relative_html_path = os.path.relpath(html_file_path, output_mhtml_path.parent)
# 替换HTML文件中的资源路径为相对路径
with open(html_file_path, 'r', encoding='utf-8') as file:
html_content = file.read()
html_content = html_content.replace(resources_dir, relative_resources_dir)
with open(output_mhtml_path, 'w', encoding='utf-8') as file:
file.write(html_content)
# 使用os.system调用命令行工具进行MHTML转换
command = f'wget --save-headers --header="Content-Disposition: attachment" -k -m "{relative_html_path}"'
os.system(command)
# 清理临时资源文件夹
shutil.rmtree(temp_resources_dir)
# 使用示例
html_file = 'offline.html'
output_mhtml_file = 'archive.mhtml'
resources_dir = 'resources'
convert_to_mhtml(html_file, output_mhtml_file, resources_dir)
确保你的系统中已安装wget
工具,因为上述代码中的os.system
调用将依赖于wget
来完成MHTML文件的创建。如果wget
不可用,你可能需要根据你的操作系统进行适当的安装。
评论已关闭