pyautogui+PixPin 用来长截图简直太easy了!

水天需 / 2024-09-22 / 原文

最近要做几百个样式统一的网页的长截图,试了python+selenium,总是搞不定扫码登录,时间比较赶,就想看看直接使用截图软件手动做,截了几十个实在受不了了~~~~o(>_<)o ~~。于是又全网搜python直接操作windows的解决方案,终于发现了pyautgui这个能满足需求的神器。

先上官网

pyautogui github page

pyautogui官方文档[英文版]

PixPin下载网址

然后上代码

import pyautogui,time
import pyperclip

def single_long_screenshot(png,url):
    pyautogui.click(1715, 20, duration=0.5)  # 浏览器新增网页
    pyperclip.copy(url)
    pyautogui.click(194, 60, duration=0.5)  # 地址栏填入url
    pyautogui.hotkey('ctrl', 'v')
    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控制台很容易获取。
操作步骤:

  1. 如下图所示,在python控制台输入 import pyautogui
  2. 输入 pyautogui.position
  3. 把鼠标放在想知道屏幕坐标的地方
  4. 回控制台按回车,即会输出坐标
    image