【办公类-39-04】批量下载微信收到图片(四)-Python模拟点击下载微信收到的图片
背景说明
最近做环境,搭档发给我很多图片,需要下载下来,然后插入WORD(一页2张、1页4张)
【办公类-102-01】植物角图片打印(A4竖板一页6张,A4竖版一页2张)-CSDN博客文章浏览阅读456次,点赞18次,收藏2次。【办公类-102-01】植物角图片打印(A4竖板一页6张,A4竖版一页2张)https://blog.csdn.net/reasonsummer/article/details/146957067?spm=1011.2415.3001.5331
存在问题:
之前用UIBOT下载微信图片,但是UIBOT一个账号只能在一台上用。如果我在第二台笔记本电脑上开着UIBOT使用,那么第一台电脑UIBOT就不能打开(打开的话,第二台的UIBOT就退出了)
所以我想在第一台电脑用Python模拟点击下载图片。就不会出现开两台UIBOT的情况了。
主要用途
日常工作中,我会收到了他人发来的一堆“微信照片”,一张张下载太累了。(比如装饰教室环境,需要打印1页2张大小的蝴蝶图)
写好简单代码。用Python帮我下载, 使用前,先点开微信第一张图片(图片再页面居中)
然后运行程序
代码展示
1、用来找XY坐标的代码
''' 用Python模拟UIBOT上传园园通照片 需要获取界面上按钮的坐标 ''' import pyautogui import time # 运行后延时,让鼠标有时间放到指定的按钮上,再获取坐标 time.sleep(2) # # 获取鼠标当前位置的坐标 x, y = pyautogui.position() # # 打印坐标 print(f"Mouse position: ({x}, {y})")2、Python下载微信图片的代码
''' Python模拟鼠标下载微信的照片(存在问题,不能停止,只能默认下载50张,删除多余) 星火讯飞,阿夏 20250415 ''' import os,time import pyautogui import pyperclip import re import win32api import win32con # 暂停,把Python页面最小化 time.sleep(5) # 先打开微信 # 读取文件名称和路径 path=r'C:\Users\jg2yXRZ\OneDrive\桌面\下载照片' os.makedirs(path,exist_ok=True) # 先点开第一张 # 预设照片数量 num=5 for i in range(num): # 打开第一图 # 移动鼠标到指定位置并右击 pyautogui.moveTo(934, 508) pyautogui.click(button='right') time.sleep(1) pyautogui.moveTo(982,554) pyautogui.click() time.sleep(2) # 输入图片名称,复制中文内容到剪贴板 name=path+fr'\{i:02}' pyperclip.copy(name) # 黏贴图片地址 pyautogui.hotkey('ctrl', 'v') time.sleep(1) pyautogui.press('enter') # # 图片显示需要时间 time.sleep(1) # 模拟按键“右箭头” pyautogui.press('right') time.sleep(1) # 'left'(左箭头) # 'up'(上箭头) # 'down'(下箭头)运行过程视频
20250501Python下载微信对话框照片
存在问题:
UIBOT可以识别出下一张的右箭头无法点击(从蓝色变成灰色),于是对最后一张下载2-3次后,就自动报错暂停了。
但是Python无法识别张数,而且他人发来的照片,我也不知道知道一共下载几张,就需要预设一个最大数值,
如果微信上一共有5张照片,但是我最大预估了10张(num=10),那么程序会自动下载前1-5张,并对第5张图片反复下载(第5-10张都是一样的)需要手动删除。
这样的程序比手动一张张反复右键-下载图片-保存,要方便多了
----------------------------
20260812 换了一台笔记本电脑,为了下载微信照片,从CSDN上把代码下载到新电脑上。
重新选择坐标(VSCODE会自动最小化,5秒时间选择网页坐标,然后5秒后,VSCODE会自动最大化,显示出需要的(X,Y)坐标)
''' 选网页上的坐标点 运行后,VSCODE自动最小化,露出网页。 有5秒时间,手动移动鼠标到网页需要的位置上,获取坐标点 5秒后,VSCODE自动最大化,终端里面有刚才选的坐标点的坐标 豆包,Deepseek、阿夏 20250808 ''' import pyautogui import time import pygetwindow as gw # 1. 找到VSCode窗口(匹配标题含 Visual Studio Code) vscode_wins = gw.getWindowsWithTitle("Visual Studio Code") if not vscode_wins: print("未找到VSCode窗口,请先打开VSCode再运行!") else: win = vscode_wins[0] # 自动最小化VSCode win.minimize() print("VSCode已自动最小化,你有5秒时间移动鼠标到目标位置") time.sleep(5) # 等待5秒给你放鼠标 # 获取当前鼠标坐标并打印 x, y = pyautogui.position() # print(f"\n已捕获鼠标坐标:X = {x} , Y = {y}") print(f"\n已捕获鼠标坐标:{x},{y}") # 934,354 # 自动最大化VSCode win.maximize() print("VSCode已自动最大化,程序结束")微信下载另存为的按钮位置有变化,重新选择,图片右击的位置,重新找到 另存为 按钮的位置
重新丰富代码(自动缩小VS,下载后自动放大VS)
''' Python模拟鼠标下载微信的照片(存在问题,不能停止,只能默认下载50张,删除多余) 添加自动缩小,完成后自动放大页面 星火讯飞,阿夏 20260812 ''' import os,time import pyautogui import pyperclip import re import win32api import win32con # 暂停,把Python页面最小化 import openpyxl import pyautogui import time import pyperclip import pygetwindow as gw # 1. 找到VSCode窗口(匹配标题含 Visual Studio Code) vscode_wins = gw.getWindowsWithTitle("Visual Studio Code") if not vscode_wins: print("未找到VSCode窗口,请先打开VSCode再运行!") else: win = vscode_wins[0] # 自动最小化VSCode win.minimize() print("VSCode已自动最小化,你有5秒时间移动鼠标到目标位置") time.sleep(5) # 等待5秒给你放鼠标 # 先打开微信 # 读取文件名称和路径 path=r'C:\Users\mhjg2\Desktop\下载照片' os.makedirs(path,exist_ok=True) # 先点开第一张 # 预设照片数量 num=20 for i in range(num): # 打开第一图 # 移动鼠标到指定位置并右击 pyautogui.moveTo(934, 508) pyautogui.click(button='right') time.sleep(1) pyautogui.moveTo(982,554) pyautogui.click() time.sleep(2) # 输入图片名称,复制中文内容到剪贴板 name=path+fr'\{i:02}' pyperclip.copy(name) # 黏贴图片地址 pyautogui.hotkey('ctrl', 'v') time.sleep(1) pyautogui.press('enter') # # 图片显示需要时间 time.sleep(1) # 模拟按键“右箭头” pyautogui.press('right') time.sleep(1) # 'left'(左箭头) # 'up'(上箭头) # 'down'(下箭头) # 自动最大化VSCode win.maximize() print("VSCode已自动最大化,程序结束")20260812自动下载微信照片(放大缩小VScode)