pyautogui+PixPin 用来长截图简直太easy了!
最近要做几百个样式统一的网页的长截图,试了python+selenium,总是搞不定扫码登录,时间比较赶,就想看看直接使用截图软件手动做,截了几十个实在受不了了~~~~o(>_<)o ~~。于是又全网搜python直接操作windows的解决方案,终于发现了pyautgui这个能满足需求的神器。
先上官网
主要用法
- pyautogui.click(1715, 20, duration=0.5) 鼠标点击
- pyautogui.hotkey('ctrl', 'v') 调用快捷键
- pyautogui.moveTo(428, 173, duration=0.5) 移动鼠标到某个位置
- pyautogui.dragTo(1462, 1029) 拖拽鼠标
- pyautogui.scroll(-100) 滚动鼠标滚轮
还有个pyperclip的包,可以把文本粘贴到剪切板,如:pyperclip.copy(url)
把url复制到剪切板,再用pyautogui调用快捷键粘贴pyautogui.hotkey('ctrl', 'v')
,非常方便。
然后上代码
import pyautogui,time
import pyperclip
def single_long_screenshot(png,url):
pyautogui.click(1715, 20, duration=0.5)
pyperclip.copy(url) # 把网页url复制到剪切板
pyautogui.click(194, 60, duration=0.5) # 鼠标移动到浏览器地址栏
pyautogui.hotkey('ctrl', 'v') # 用快捷键把网页url粘贴到浏览器地址栏
pyautogui.press('enter') # 按回车键
pyautogui.moveTo(428, 173, duration=0.5) # 移到截屏起始点
pyautogui.hotkey(['ctrl', '1']) # 快捷键 ctrl+1 打开PixPin
pyautogui.moveTo(428, 173, duration=0.5) # 截屏起始点
pyautogui.dragTo(1462, 1029) # 截屏结束点
pyautogui.hotkey(['l']) # PixPin长截图功能快捷键
pyautogui.moveTo(600, 400, duration=0.5) # 鼠标移到屏幕中心
n = 80
while n > 0: # 直接滚轮无脑滚动80次
pyautogui.scroll(-100)
n -= 1
pyautogui.click(1378, 148, duration=0.5) # 点击截图工具的保存按钮,不同网页坐标可能不同
time.sleep(1) # 需要等待一小会,否则会出现没粘贴上去的情况
pyperclip.copy(png) # 复制传进来的文件名
pyautogui.hotkey('ctrl', 'v') # 把文件名粘贴到保存文件的对话框
time.sleep(0.5)
pyautogui.click(1608, 748, duration=0.5) # 点击对话框的保存按钮
pyautogui.click(1678, 21, duration=0.5) # 点击关闭网页
代码很简陋,最重要的要知道操作的按钮的坐标,这个在python控制台很容易获取。
操作步骤:
- 如下图所示,在python控制台输入
import pyautogui
- 输入
pyautogui.position()
- 把鼠标放在想知道屏幕坐标的地方
- 回控制台按回车,即会输出坐标