Python 控制Edge 保存下载网页
本帖最后由 hgils 于 2023-4-21 09:20 编辑一直想实现定时自动保存某个网页。之前采用Powershell控制IE,结果发现会弹出保存的窗口,需要点击一下。
后来研究采用Python 控制Edge可以实现保存相关网页。
参考了网上一些方案,代码如下,需要安装Webdriver 、selenium 以及Pywin32 模块
"""
利用Edge保存网页
"""
from selenium import webdriver
import win32api
import win32con
import win32clipboard
from ctypes import *
import datetime
import time
wd = webdriver.Edge(r"webdrive 安装位置")
wd.get(r"http://www.baidu.com")
time.sleep(20)
text=str(datetime.datetime.now().strftime("%Y%m%d"))
# 将日期复制到剪切板
win32clipboard.OpenClipboard()
win32clipboard.EmptyClipboard()
win32clipboard.SetClipboardText(text)
win32clipboard.CloseClipboard()
# 按下ctrl+s
win32api.keybd_event(0x11, 0, 0, 0)
win32api.keybd_event(0x53, 0, 0, 0)
win32api.keybd_event(0x53, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(0x11, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(5)
# 按下ctrl+v
win32api.keybd_event(0x11, 0, 0, 0)
win32api.keybd_event(0x56, 0, 0, 0)
win32api.keybd_event(0x56, 0, win32con.KEYEVENTF_KEYUP, 0)
win32api.keybd_event(0x11, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(2)
# 按下回车
win32api.keybd_event(0x0D, 0, 0, 0)
win32api.keybd_event(0x0D, 0, win32con.KEYEVENTF_KEYUP, 0)
time.sleep(5)
wd.close() from selenium import webdriver
def save_webpage_screenshot(url, output_path):
options = webdriver.ChromeOptions()
options.add_argument("--headless")
options.add_argument("--window-size=1920,1080")
options.add_argument("--disable-gpu")
driver = webdriver.Chrome(options=options)
driver.get(url)
driver.implicitly_wait(5)
driver.save_screenshot(output_path)
driver.quit()
url = "https://www.baidu.com/"
output_path = "screenshot.png"
save_webpage_screenshot(url, output_path)
学学原代码。 模拟按键的话,用按键精灵应该也可以 也可以调用Chrome DevTools协议的Page.captureSnapshot
from selenium import webdriver
import datetime
import time
wd = webdriver.Edge()
wd.get(r"http://www.baidu.com")
filename=str(datetime.datetime.now().strftime("%Y%m%d"))+".mhtml"
webcontent=wd.execute_cdp_cmd('Page.captureSnapshot', {})
with open(filename, 'w', newline='') as f:
f.write(webcontent['data'])
time.sleep(5)
wd.close() 这是保存网页内容还是保活网页心跳? 看了这个代码,学会了很多哦 感谢分享 标题错了 win32.还是很实用的
页:
[1]
2