最近在做网页分析的时候偶然有需求将网页保存为MHTML格式,这样可以最大程度的保留网页的样式以及图片信息,搜索寻找整理过后得到如下代码
其中,pagelist.txt
文件内容如下:
邮箱,qq邮箱,https://mail.qq.com/
邮箱,阿里邮箱,https://mail.aliyun.com/alimail/auth/login
邮箱,163邮箱,https://mail.163.com/
邮箱,新浪邮箱,https://mail.sina.com.cn/
搜索引擎,百度,https://www.baidu.com/
搜索引擎,搜狗,https://www.sogou.com/
搜索引擎,bing,https://www.bing.com/
商城,淘宝,https://world.taobao.com/
商城,小米商城,https://www.mi.com/shop
商城,京东,https://www.jd.com/
商城,唯品会,https://www.vip.com/
保存代码如下
from selenium import webdriver
import csv
import os
# 构造webdriver
driver_path = r"C:\Program Files\Google\Chrome\Application\chromedriver.exe"
driver = webdriver.Chrome(driver_path)
def save_page(kind, name, url):
driver.get(url)
# 执行chrome dev命令获得mhtml文件内容
res = driver.execute_cdp_cmd('Page.captureSnapshot', {
})
# 生成文件夹
save_path = f'source/{
kind}/{
name}.mhtml'
if not os.path.exists(os.path.dirname(save_path)):
os.makedirs(os.path.dirname(save_path))
# 保存到本地
with open(save_path, 'w', newline='') as sf:
sf.write(res['data'])
if __name__ == '__main__':
# 打开所有网页列表
with open("pagelist.txt", mode='r', encoding='utf-8') as f:
csv_reader = csv.reader(f)
for line in csv_reader:
print(line)
save_page(line[0], line[1], line[2])
driver.quit()