Python利用PyAutoGUI轻松搞定图片上传
作者:派森酱 发布时间:2022-11-19 23:15:18
最近用vuepress建了个博客,音乐的背景图片需要网络地址。
还有博客自动复用的摘要图片也需地址
开始用的阿里云的免费对象存储oss,但又是登录又是设置读写权限的,稀碎的操作令人疲惫。能不能简单点,自动上传,并且马上能得到文件的网络地址。
于是开始探索轻量级的方案,手动给自己搞一个,一键复制开箱即用的的上传页面:
把文件传到自己的云服务器上,传完后自带文件地址和copy按钮,流程顿时清爽了许多。
接下来的问题是,图片准备好了,十几张,怎么传更轻松点?这时背景音乐响起“王牌飞行员pyautogui请求出战”。优秀,机械重复的操作(如刷新网页、抢票、某些小游戏等)无疑是你的拿手好戏。
实时获取鼠标的当前坐标
这点很重要,因为所有的点击操作都基于坐标,就像selenium的操作基于xpath路径一样:
import time, os
import pyautogui as pag
try:
while True:
#print('Press Ctrl-C to end')
x, y = pag.position() #返回鼠标的坐标
print('Position : (%s, %s)' % (x, y)) # 打印坐标
time.sleep(1) #每个1s中打印一次 , 并执行清屏
os.system('cls') #执行系统清屏指令
except KeyboardInterrupt:
print('end')
输出如下,鼠标放在哪就会显示哪个地方的x,y坐标:
Position : (937, 668)
Position : (1320, 689)
Position : (836, 579)
Position : (669, 585)
开始上传了
上传的操作页面我已建好:
http://ssw.fit/upload
获取到鼠标坐标就好办了,一路点击,疯狂输出。selenium还有验证码、反爬虫等限制,这个你自己的电脑,还不是想点哪就点哪。先点击“选择文件”按钮,
import pyautogui
pyautogui.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)
双击选中图片
图片的位置是固定的,所以可以取前5或前10张图片的坐标。下次再上传多张图的话,先清空文件夹,把图片拷贝到文件夹就好了
pyautogui.doubleClick(x,y)
点击“上传”按钮
上传需要时间,sleep一会
pyautogui.click(304, 278)
#上传需要时间,预算等多久
if x == 847:
#847是第一张图片的x坐标,因为我上传的第一张是gif动图,文件大,上传多等几秒
time.sleep(11)
else:
time.sleep(2.5)
点击"copy"按钮
图片上传完后会自动生成copy按钮,点击它直接复制文件的网络地址
pyautogui.click(304, 278)
热键ctrl+v,回车,网页访问图片
pyautogui.hotkey('ctrl','v')
time.sleep(0.5)
pyautogui.hotkey('enter')
每张照片传完再自动粘贴地址和网页浏览,看看刚上传的图片多漂亮:
所以,脚本结束前,让我们欣赏美图3秒:
time.sleep(3)
点击浏览器的返回按钮
最后一步,欣赏完,返回主页面进入下一张图片的上传流程!
pyautogui.click(32, 67)
time.sleep(2)
完整脚本
总结一下,这里用到的pyautogui操作:
单击
click
双击
doubleClick
输入文字
typewrite
热键组合
hotkey('ctrl','v')
,热键回车hotkey('enter')
import time
import pyautogui
def auto_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')
time.sleep(1)
# 双击图片
pyautogui.doubleClick(x,y)
# 等文件出现
time.sleep(6)
# 点击“上传”按钮
pyautogui.click(304, 278)
#等几秒传完
if x == 847:
#847是第一张图片的x坐标,因为我上传的第一张是gif动图,文件大,上传多等几秒
time.sleep(11)
else:
time.sleep(2.5)
# 点击“copy”按钮
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') for f in file_list]
运行过程
上传2张图片,整个脚本运行起来是这样的:
最后一个问题
上传了好几张,都到哪去了?这里可以看到啦:http://ssw.fit/free/
来源:https://mp.weixin.qq.com/s/qEZBU2R8oaAdi9nPwpEeAw
猜你喜欢
- HP注释规范注释在写代码的过程中非常重要,好的注释能让你的代码读起来更轻松,在写代码的时候一定要注意注释的规范。“php是一门及其容易入门的
- IFRAME 元素 | iframe 对象创建内嵌浮动框架。成员表下面的表格列出了 iframe 对象引出的成员。请单击左侧的标签来选择你想
- 前言之前看过一遍的python教程,真的是自己看过一遍,python的程序能看懂,但是很难去实现。比较困难的自己实现一些代码,找工作原因,自
- html<!--图片轮播 Start--><div class="pics-ul">
- 如果不用类库(如jquery)来写,往往很多时候,都需要通过id或tag来获取html里的某一对象,然后对其进行操作。为了节省代码,把常用的
- 这篇文章主要介绍了简单了解为什么python函数后有多个括号,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- 引子首先说 正则表达式是什么?正则表达式,又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expres
- 一、临时表空间概念临时表空间用来管理数据库排序操作以及用于存储临时表、中间排序结果等临时对象,当ORACLE里需要用到SORT的时候,并且当
- 需求需要向大约 500 名用户发送带有 Excel 附件的电子邮件,同时必须按用户从主 Excel 文件中拆分数据以创建他们自己的特定文件,
- 本文给出一条 SQL 语句用于展示在同一名服务器上,不同的数据库间查询,注意当前连接用户要对两个库都有权限SQL Server 中 SQL
- 如何通过PHP实现Des加密算法代码实例注:php7以上不支持了,因为php7去掉了某些函数, 另外变量的{}要改为[]<?phpcl
- 对所有数据进行整合与管理当你使用SQL Server 2008企业级的数据仓库平台时,你可以高效的操纵所有数据,并对其进行统一管理存储。◆合
- 本文实例为大家分享了python实现opencv+scoket网络实时图传的具体代码,供大家参考,具体内容如下服务器分析:1.先通过在服务器
- 将int转换成datetime格式原始时间格式users['timestamp_first_active'].head()原
- 阅读上一篇:Freshow工具使用方法一. eval加密是在网马解密中最常见的,eval在jscript脚本中实际上是一个函数,简单可以理解
- 本游戏程序实现的功能为本地二人对弈中国象棋,实现语言为javascript+VML,在windows 2000 pro+IE 6sp1的环境
- 代码如下:登陆时记录cookies页面代码 <!--#include file="md5.asp"--&
- 概述从今天开始我们将开启一段自然语言处理 (NLP) 的旅程. 自然语言处理可以让来处理, 理解, 以及运用人类的语言, 实现机器语言和人类
- xlwt与xlrd只能针对xls格式的excel进行操作,如果想对xlsx格式进行操作请使用openpyxl模板对excel进行操作xlwt
- 主要功能在copyFiles()函数里实现,如下:def copyFiles(src, dst): sr