使用selenium将网页保存为MHTML格式

最近在做网页分析的时候偶然有需求将网页保存为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()

猜你喜欢

转载自blog.csdn.net/qq_46311811/article/details/128632254