Python利用PyAutoGUI轻松搞定图片上传

目录
  • 实时获取鼠标的当前坐标
  • 开始上传了
  • 完整脚本
  • 运行过程

最近用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/

到此这篇关于Python利用PyAutoGUI轻松搞定图片上传的文章就介绍到这了,更多相关Python PyAutoGUI图片上传内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python中Selenium上传文件的几种方式

    目录 1. input 元素上传文件 2. input 元素隐藏 3. 文件选择对话框 4. 使用 pywinauto 上传文件 5. pyautogui 6. 并发问题 Selenium 封装了现成的文件上传操作.但是随着现代前端框架的发展,文件上传的方式越来越多样.而有一些文件上传的控件,要做自动化控制会更复杂一些,这篇文章主要讨论在复杂情况下,如何通过自动化完成文件上传. 1. input 元素上传文件 如果页面需要文件上传,那么在大多数情况下,都能在页面源代码中找到一个input的元素.

  • Python Cloudinary实现图像和视频上传详解

    Cloudinary提供了一个API,用于将图像.视频和任何其他类型的文件上传到云端.上传到Cloudinary的文件通过安全备份和修订历史记录安全存储在云中.Cloudinary的API允许从您的服务器.直接从访问者的浏览器或移动应用程序或通过远程公共URL获取安全上传. Cloudinary的Python SDK封装了Cloudinari的上传API并简化了集成.Python方法可用于轻松地将Python图像和视频上传到云端,Python视图助手方法可用于直接从浏览器上传到Cloudinar

  • python 使用第三方库requests-toolbelt 上传文件流的示例

    python 使用第三方库requests-toolbelt 上传文件流,内容如下所示: # pip install requests-toolbelt 使用第三方库上传文件流 from requests_toolbelt.multipart.encoder import MultipartEncoder 补充:Python使用requests和requests_toolbelt上传文件 一.文件上传(Form 表单方式)[先将文件读取至内存中,再将内存中的文件信息上传至服务器] 1.单文件上传

  • Python Flask 上传文件测试示例

    目录 Flask file upload代码 上传测试 上传临时文件 使用 tempfile 使用 StringIO 其他 Flask file upload代码 import os from flask import Flask, request, redirect, url_for, send_from_directory from werkzeug.utils import secure_filename UPLOAD_FOLDER = '/tmp/flask-upload-test/'

  • Python Flask实现图片上传与下载的示例详解

    目录 1.效果预览 2.新增逻辑概览 3.tuchuang.py 逻辑介绍 3.1 图片上传 3.2 图片合法检查 3.3 图片下载 4.__init__.py 逻辑介绍 5.upload.html 介绍 5.1 upload Jinja 模板介绍 5.2 upload css 介绍(虚线框) 5.3 upload js 介绍(拖拽) 1.效果预览 我们基于 Flask 官方指导工程,增加一个图片拖拽上传功能,效果如下: 2.新增逻辑概览 我们在官方指导工程上进行增加代码,改动如下: 由于 fl

  • Python利用PyAutoGUI轻松搞定图片上传

    目录 实时获取鼠标的当前坐标 开始上传了 完整脚本 运行过程 最近用vuepress建了个博客,音乐的背景图片需要网络地址. 还有博客自动复用的摘要图片也需地址 开始用的阿里云的免费对象存储oss,但又是登录又是设置读写权限的,稀碎的操作令人疲惫.能不能简单点,自动上传,并且马上能得到文件的网络地址. 于是开始探索轻量级的方案,手动给自己搞一个,一键复制开箱即用的的上传页面: 把文件传到自己的云服务器上,传完后自带文件地址和copy按钮,流程顿时清爽了许多. 接下来的问题是,图片准备好了,十几张

  • 利用jQuery插件imgAreaSelect实现图片上传裁剪(同步显示图像位置信息)

    <body> <div class="container demo"> <div class="big"> <p class="instructions">大图预览</p> <div class="bigframe"> <img width="300" height="300" src="images

  • 利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)

    这个应用的关键: 1.让左边选择区域和右边显示的图像信息保持一至. 2.根据左边选择区域的大小,来让右边有一个对局部放大或缩小的效果.  3.后台上传功能. 那么这一次,只谈[放大]或[缩小].[位置]和[上传]问题,下次,我再写下(因为那个插件代码太多,我也没看完,正在学习研究当中). ["区域":是宽*高,也就是面积:] ["放大或缩小":是一个比例值,通常我们说放大或缩小,都说放大或缩小百分之多少,或者说放大或缩小多少倍数] 一.怎么能放大或者缩小图片的局部?

  • 利用Vue3和element-plus实现图片上传组件

    目录 前言 具体代码 图片上传 上传组件 前言 element-plus 提供了 uploader 组件,但是不好定制化,所以自己又造了个轮子,实现了一个图片上传的组件,它的预期行为是: 1.还没上传图片时,显示上传卡片 2.上传图片时显示进度条,隐藏上传卡片 3.上传成功时显示图片缩略图,上传失败则显示失败提示 4.支持上传图片的预览和删除 具体如下图所示: 具体代码 图片上传 这里使用的图床是牛图网,无需注册,貌似也没有图片大小的限制,但是请不要上传违规图像. <code>import a

  • 利用node+koa+axios实现图片上传和回显功能

    目录 前言 开发前需要掌握的一些库 代码结构 实现代码 前言 代码地址 开发前需要掌握的一些库 koa:用来起一个web服务器 koa2-cors: 解决跨域问题 @koa/router: koa的路由处理 koa-body: koa参数的获取 koa-static: 静态内容 @koa/multer multer:图片上传的插件 代码结构 实现代码 1.第一步:用koa+koa-router搭建一个简单的web服务 //main.js const Koa = require('koa') //

  • 利用imgareaselect辅助后台实现图片上传裁剪

    因为项目当中用到图片裁剪,本来可以不用到后台进行裁剪的,但是要兼容万恶的IE浏览器,所以不得不使用后台进行裁剪. 这次使用到imgareaselect插件获取需要裁剪区域的坐标,再由后台进行裁剪操作.先上个效果图再说 但是这里有一个坑就是上传的图片过大,可能会造成裁剪的区域跟插件中显示的不一样,所以得现在后台对云图片进行压缩在裁剪. /** * 等比例压缩算法: * 算法思想:根据压缩基数和压缩比来压缩原图,生产一张图片效果最接近原图的缩略图 * @param srcURL 原图地址 * @pa

  • 利用ASPUPLOAD,ASPJPEG实现图片上传自动生成缩略图及加上水印

    今天在站长站看到一网友写的相册程序,功能挺简单的,看到他用了ASPJPEG生成缩略图,不由想起再用上ASPUPLOAD上传,于是花了一个小时时间完善了他的代码. 以下代码均加有简单的注释,如果你看不懂,请先看ASPJPEG以及ASPUPLOAD的说明文档(E文,希望有心理准备),看不懂的可以问我. 以下是代码: 复制代码 代码如下: <%  if session("admin")<>"on" then  Response.Redirect"

  • python调用文字识别OCR轻松搞定验证码

    今天带你们去研究一个有趣的东西,文字识别OCR.不知道你们有没有想要识别图片,然后读出文字的功能.例如验证码,如果需要自动填写的话就需要这功能.还有很多种情况需要这功能的. 我们可以登录百度云,然后看看里面的接口文档.接口功能还是有比较丰富的应用场景的. # encoding:utf-8 import requests import base64 ''' 通用文字识别 ''' request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/gene

  • Python轻松搞定视频剪辑重复性工作问题

    目录 01 安装 02 剪辑 01 安装 对视频进行批量剪辑,需要三个库,分别是Moviepy库和Pathlib库,还有Tkinter库. 首先我们对这两个库进行安装,命令如下: pip install moviepy pip install pathlib 02 剪辑 上面我们已经安装好所需要的库了,现在开始来对视频进行剪辑操作. 视频剪辑: Moviepy库有一个VideoFileClip函数,将视频传入这个函数后,会返回一个VideoFileClip实例对象,该对象可以被subclip()

  • 网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)

    有时候你会发现,你在搜索引擎输入网站名称的时候,出来的网站信息是你们的,但是域名却是一个陌生的,这种情况可以基本确定网站被镜像了,那么究竟什么叫网站被镜像? 恶意镜像,也叫恶意克隆,恶意解析,是指有人通过域名 A 记录直接解析别人 IP 地址,从而得到一个在访问者眼中完全相同网站的过程.其工作原理基本上是这样子的:有用户访问镜像站点时,程序就会来正版的站点查询数据,并修改相关链接然后呈献给用户,实质上还是在读取原站的数据.严谨一点的解释:通过复制整个网站或部分网页内容并分配以不同域名和服务器,以

随机推荐