使用selenium保存完整网页
Chrome浏览器在保存网页时可以使用mhtml格式,保存单页面网页,可以直接将整个页面最大化的保持原样,包括图片、js、css保存为单页面。默认是这个选项是关闭的,需要在chrome://flags
中将其打开。selenium可以化处理浏览器各类操作,但是保存网页时的弹窗是windows弹窗,selenium无法操作,需要使用pywin32来解决。具体方式如下:
打开mhtml格式支持:
options = webdriver.ChromeOptions()
options.add_argument('--save-page-as-mhtml')
driver = webdriver.Chrome(chrome_options=options)
按下ctrl+s
win32api.keybd_event(17, 0, 0, 0) # 按下ctrl
win32api.keybd_event(83, 0, 0, 0) # 按下s
win32api.keybd_event(83, 0, win32con.KEYEVENTF_KEYUP, 0) # 释放s
win32api.keybd_event(17, 0, win32con.KEYEVENTF_KEYUP, 0) # 释放ctrl
获取另存为窗口windows句柄并激活,输入enter保存。
hd = win32gui.FindWindow(u"#32770", u"另存为")
win32gui.SetForegroundWindow(hd)
sleep(0.2)
win32api.keybd_event(13, 0, 0, 0) # 按下enter
win32api.keybd_event(13, 0, win32con.KEYEVENTF_KEYUP, 0) # 释放enter
win10 64位在是这个类,其他系统可以尝试后修改,也可以定位下文件名输出框键入文件名,然后定位保存按钮触发保存,不过我对win32api不熟悉,所以没有这么操作,直接激活窗口之后发送enter
键保存,然后重命名。