当前位置: 首页 > 科技观察

PyAutoGUI,轻松上传图片!

时间:2023-03-18 12:13:28 科技观察

最近用vuepress搭建了一个博客,音乐的背景图需要一个网址。还有一些抽象图像会被同样需要地址的博客自动重复使用。我开始使用阿里云的免费对象存储oss,但是必须登录并设置读写权限。脆弱的操作很累人。能不能简单点,自动上传,立即获取文件的网络地址。于是开始摸索一个轻量级的方案,自己手动搭建一个,一键复制开箱即用的上传页面:将文件上传到自己的云服务器,上传后带上文件地址和复制按钮,过程顿时清爽了许多。接下来的问题是,图片都准备好了,有十几张,怎么上传比较方便呢?这时,背景音乐响起“王牌飞行员pyautogui请求播放”。优秀的、机械的重复操作(比如刷新网页、抢票、一些小游戏等)无疑是你的拿手好戏。实时获取鼠标当前坐标非常重要,因为所有的点击操作都是基于坐标的,就像selenium的操作都是基于xpath路径一样:importtime,osimportpyautoguiaspagtry:whileTrue:#print('按Ctrl-C结束')x,y=pag.position()#返回鼠标坐标print('Position:(%s,%s)'%(x,y))#打印坐标时间。sleep(1)#每1s打印一次,并执行清屏os.system('cls')#执行除KeyboardInterrupt之外的系统清屏命令:print('end')输出如下,其中鼠标会显示x和地方的y坐标:Position:(937,668)Position:(1320,689)Position:(836,579)Position:(669,585)开始上传我建的上传操作页面:http://ssw.fit/upload得到鼠标坐标好办,一路点击,疯狂输出。Selenium还有验证码、反爬虫等限制。这是你自己的电脑,所以你可以点击任何你想点击的地方。首先单击“选择文件”按钮。importpyautoguipyautogui.click(307,227)time.sleep(2.5)#弹出对话框后,点击路径栏,目的是粘贴下一步的路径pyautogui.click(993,332)time.sleep(1.5)typerwrite类型文件路径。每台电脑的文件路径不同,让pyautogui的typerwrite输入图片文件夹的路径,不用加时间参数,输入速度快。#输入图片路径pyautogui.typewrite('C:/Users/0717/Pictures/blog/upload')#按回车键pyautogui.hotkey('enter')time.sleep(1)双击选中picture图片的位置是固定的,所以可以取前5张或10张图片的坐标。如果下次要上传更多图片,请先清空文件夹,再将图片复制到文件夹中。pyautogui.doubleClick(x,y)点击“上传”按钮上传需要时间,睡一会。pyautogui.click(304,278)#上传需要时间,要等多久预算ifx==847:#847是第一张图的x坐标,因为我上传的第一张图是gif动画,文件较大,上传较多,稍等几秒time.sleep(11)else:time.sleep(2.5)点击“复制”按钮图片上传完成后,会自动生成一个复制按钮,点击即可直接复制文件的网络地址。pyautogui.click(304,278)热键ctrl+v,回车,网页访问图片然后自动粘贴地址,浏览网页,看看刚刚上传的图片有多美:所以,在脚本结束之前,让我们欣赏一下美图3秒:time.sleep(3)最后一步点击浏览器后退按钮,欣赏完毕,返回主页面进入下一张图片的上传流程!pyautogui.click(32,67)time.sleep(2)完整的脚本总结了这里使用的pyautogui操作:clickclickdoubleclickdoubleclickinputtexttypewritehotkeycombinationhotkey('ctrl','v'),hotPressEnterhotkey('enter')importtimeimportpyautoguidefauto_upload(x,y,file_path):#点击“选择文件”按钮pyautogui.click(307,227)time.sleep(2.5)#弹出对话框后,点击路径那一栏,目的是粘贴下一步的路径pyautogui.click(993,332)time.sleep(1.5)#输入图片路径pyautogui.typewrite(file_path)#按回车键pyautogui.hotkey('enter')时间。sleep(1)#双击图片pyautogui.doubleClick(x,y)#等待文件出现time.sleep(6)#点击“上传”按钮pyautogui.click(304,278)#等几下secondstocompleteifx==847:#847是第一张图片的横坐标,因为我上传的第一张是gif动图,文件比较大,等几秒上传time.sleep(11)else:time.sleep(2.5)#点击“复制”按钮pyautogui.click(297,545)time.sleep(1)#点击浏览器地址栏pyautogui.click(410,66)#模拟键盘点击ctrl+v,然后回车pyautogui.hotkey('ctrl','v')time.sleep(0.5)pyautogui.hotkey('enter')#赏美3秒time.sleep(3)#点击浏览器的返回键pyautogui.click(32,67)time.sleep(2)#文件的x和y坐标file_list=[(847,489),(965,490),(1136,493),(1271,504),(1391,498)][auto_upload(f[0],f[1],'C:/Users/0717/Pictures/blog/upload')forfinfile_list]运行过程中上传了2张图片,整个脚本运行是这样的:最后一题上传了几张图片,它们都去哪儿了?你可以在这里看到它:http://ssw.fit/free/