hgils 发表于 2023-4-20 16:47

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()

Eliauk66 发表于 2023-4-20 17:57

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)

ysjd22 发表于 2023-4-20 18:57

学学原代码。

sumile 发表于 2023-4-20 19:16

模拟按键的话,用按键精灵应该也可以

wangtietou 发表于 2023-4-20 19:25

也可以调用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()

艾sk贝拉 发表于 2023-4-20 19:39

这是保存网页内容还是保活网页心跳?

yy103050 发表于 2023-4-20 20:38

看了这个代码,学会了很多哦

lj149446 发表于 2023-4-20 21:05

感谢分享

blacktulip 发表于 2023-4-21 03:41

标题错了

lizy169 发表于 2023-4-21 07:54

win32.还是很实用的
页: [1] 2
查看完整版本: Python 控制Edge 保存下载网页