python读取控制鼠标键盘

这篇具有很好参考价值的文章主要介绍了python读取控制鼠标键盘。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一,工具

二,鼠标

1,实时显示鼠标位置

2,控制移动鼠标

3,控制点击鼠标

三,键盘

1,单键输入

2,组合键输入

四,实用demo

1,多网页依次点击固定位置的按钮

2,收集多个网页的链接


一,工具

pyautogui库

命令:pip3 install pyautogui==0.9.50

如果不指定版本,可能会在使用时报错: module 'pyscreeze' has no attribute 'locateOnWindow'

二,鼠标

1,实时显示鼠标位置

import pyautogui
while True:
    print(pyautogui.position())

例如,我定位到一个关键的复制按钮的位置:Point(x=830, y=200)

2,控制移动鼠标

pyautogui.moveTo(x=830,y=200)

3,控制点击鼠标

pyautogui.click(1477,77,button='left')
pyautogui.click(830,200,button='left')

三,键盘

1,单键输入

pyautogui.press('a')
pyautogui.press('b')

2,组合键输入

pyautogui.hotkey('ctrl', 'v')

四,实用demo

1,多网页依次点击固定位置的按钮

假设现在打开了很多网页,每个网页的固定位置有个工具按钮,单击之后在固定位置有个复制按钮,我们要依次遍历每个网页,点击工具按钮和复制按钮,并把文本收集汇总起来。

V1版本:

import pyperclip
import time
import pyautogui

def clickFirstPage():
    pyautogui.click(600, 25, button='left') #第1个网页页签的坐标

def closeFirstPage():
    clickFirstPage()
    pyautogui.hotkey('ctrl', 'w')

pageNum = 5 #网页的数量
clickFirstPage()
for i in range(0,pageNum):
    pyautogui.click(600, 77, button='left')  # url的坐标
    pyautogui.hotkey('ctrl', 'c')
    pyautogui.click(5400, 1400, button='left')  # 记事本的坐标
    pyautogui.hotkey('ctrl', 'v')
    pyautogui.press('enter')

    pyautogui.click(1477,77,button='left') #工具按钮的坐标
    time.sleep(0.1)
    pyautogui.click(830,200,button='left') #复制按钮的坐标
    time.sleep(0.1)
    pyautogui.click(5400,1400,button='left')  #记事本的坐标
    pyautogui.hotkey('ctrl', 'v')
    pyautogui.press('enter')
    closeFirstPage()

V2版本:

如果获取系统的剪切板,则不需要记事本,直接print

import pyperclip
import time
import pyautogui

def clickFirstPage():
    pyautogui.click(20, 20, button='left') #第1个网页页签的坐标

def closeFirstPage():
    clickFirstPage()
    pyautogui.hotkey('ctrl', 'w')

stopPage = 'edge://favorites/?id=337'

clickFirstPage()
for i in range(0, 30):
    pyautogui.click(600, 77, button='left')  # url的坐标
    pyautogui.hotkey('ctrl', 'c')
    time.sleep(0.1)
    txt = pyperclip.paste()
    if txt == stopPage:
        break
    print(txt)
    time.sleep(0.1)
    pyautogui.click(1477,77,button='left') #工具按钮的坐标
    time.sleep(0.1)
    pyautogui.click(830,200,button='left') #复制按钮的坐标
    time.sleep(0.1)
    txt = pyperclip.paste()
    print(txt)
    closeFirstPage()

V3版本:

在V1的基础上,新增预处理功能,以及用固定页面作为停止条件的功能。

预处理:先把所有网页刷几遍,让资源加载出来。


import pyperclip
import time
import pyautogui

def clickFirstPage():
    pyautogui.click(20, 20, button='left') #第1个网页页签的坐标

def closeFirstPage():
    clickFirstPage()
    pyautogui.hotkey('ctrl', 'w')

def copyOnePage(stopPage):
    pyautogui.click(600, 77, button='left')  # url的坐标
    pyautogui.hotkey('ctrl', 'c')
    time.sleep(0.05)
    txt = pyperclip.paste()
    if txt == stopPage:
        return False
    pyautogui.click(1477, 77, button='left')  # 工具按钮的坐标
    time.sleep(0.05)
    pyautogui.click(830, 200, button='left')  # 复制按钮的坐标
    time.sleep(0.05)
    txt2 = pyperclip.paste()
    if txt2 != '' and 'm3u8' not in txt and txt !=txt2:
        print(txt)
        print(txt2)
    closeFirstPage()
    return True

def init():
    clickFirstPage()
    for i in range(0, 60):
        pyautogui.hotkey('ctrl', 'tab')
        time.sleep(0.3)
    clickFirstPage()


stopPage = 'edge://favorites/?id=337'
init()
for i in range(0, 30):
    if copyOnePage(stopPage) ==False:
        break

V4版本:

在V3的基础上,新增对于没有加载出来的网页,额外等待的功能

import pyperclip
import time
import pyautogui

def clickFirstPage():
    pyautogui.click(20, 20, button='left') #第1个网页页签的坐标

def closeFirstPage():
    clickFirstPage()
    pyautogui.hotkey('ctrl', 'w')

def copyOnePage(stopPage):
    pyautogui.click(600, 77, button='left')  # url的坐标
    pyautogui.hotkey('ctrl', 'c')
    time.sleep(0.05)
    txt = pyperclip.paste()
    if txt == stopPage:
        return 0
    pyautogui.click(1477, 77, button='left')  # 工具按钮的坐标
    time.sleep(0.05)
    pyautogui.click(830, 200, button='left')  # 复制按钮的坐标
    time.sleep(0.05)
    txt2 = pyperclip.paste()
    if txt2 != '' and 'm3u8' not in txt and txt !=txt2:
        print(txt)
        print(txt2)
        return 1
    return 2

def init():
    clickFirstPage()
    for i in range(0, 60):
        pyautogui.hotkey('ctrl', 'tab')
        time.sleep(0.3)
    clickFirstPage()


stopPage = 'edge://favorites/?id=337'
init()
for i in range(0, 30):
    ret = copyOnePage(stopPage)
    if ret == 0:
        break
    elif ret == 1:
        closeFirstPage()
    else:
        time.sleep(1)
        copyOnePage(stopPage)
        closeFirstPage()

V5版本:

在V4的基础上,新增了监听按键功能,还新增了过滤url长度的功能。


import pyperclip
import time
import pyautogui
import pynput.keyboard
from threading import Thread

escFlag = False

def on_press(key):
    # 监听按键
    if str(key) == 'Key.esc':
        global escFlag
        escFlag = True

def clickFirstPage():
    pyautogui.click(20, 20, button='left') #第1个网页页签的坐标

def closeFirstPage():
    clickFirstPage()
    pyautogui.hotkey('ctrl', 'w')

def copyOnePage(stopPage):
    pyautogui.click(600, 77, button='left')  # url的坐标
    pyautogui.hotkey('ctrl', 'c')
    time.sleep(0.1)
    txt = pyperclip.paste()
    if txt == stopPage:
        return 0
    pyautogui.click(1555, 77, button='left')  # 工具按钮的坐标
    time.sleep(0.3)
    pyautogui.click(855, 200, button='left')  # 复制按钮的坐标
    time.sleep(0.15)
    txt2 = pyperclip.paste()
    if txt != '' and txt2 != '' and 'm3u8' not in txt and txt !=txt2 and len(txt)<100:
        print(txt)
        print(txt2)
        return 1
    return 2

def init():
    clickFirstPage()
    for i in range(0, 30):
        pyautogui.hotkey('ctrl', 'tab')
        time.sleep(0.5)
        if escFlag:
            return
    clickFirstPage()


def downAllPage(stopPage):
    init()
    for i in range(0, 50):
        if escFlag:
            return
        ret = copyOnePage(stopPage)
        if ret == 0:
            break
        elif ret == 1:
            closeFirstPage()
        else:
            time.sleep(1)
            copyOnePage(stopPage)
            closeFirstPage()

def main():
    stopPage = 'edge://favorites/?id=283'
    downAllPage(stopPage)



t = Thread(target=main)
with pynput.keyboard.Listener(on_press=on_press) as pklistener:
    t.start()
    t.join()
    pklistener.join()

2,收集多个网页的链接

这里的例子是一个网页,里面有4行6列的24个窗口,每个窗口点进去都是一个新网页,但是在url里面搜不到这24个新网页的相关信息。

于是我们可以按照固定间隔,依次点击每一个窗口,然后再把url收集下来。文章来源地址https://www.toymoban.com/news/detail-846666.html


import pyperclip
import time
import pyautogui
import pynput.keyboard
from threading import Thread

escFlag = False

def on_press(key):
    # 监听按键
    if str(key) == 'Key.esc':
        global escFlag
        escFlag = True

def downOnePage(x,y):
    pyautogui.click(x, y, button='left')
    time.sleep(1)
    pyautogui.click(600, 77, button='left')  # url的坐标
    time.sleep(0.5)
    pyautogui.hotkey('ctrl', 'c')
    time.sleep(0.5)
    txt = pyperclip.paste()
    time.sleep(0.5)
    print(txt)
    pyautogui.click(40, 70, button='left') #返回
    time.sleep(0.5)

def downAllPage():
    for x in range(0, 6):
        if escFlag:
            return
        downOnePage(x*300+200,600)
    pyautogui.click(1777, 222, button='left')
    pyautogui.scroll(-550)
    time.sleep(0.5)

def main():
    downAllPage()
    downAllPage()
    downAllPage()
    downAllPage()

def showPos():
    while True:
        print(pyautogui.position())


t = Thread(target=main)
with pynput.keyboard.Listener(on_press=on_press) as pklistener:
    t.start()
    t.join()
    pklistener.join()

到了这里,关于python读取控制鼠标键盘的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# Windows登录界面进行截图,控制鼠标键盘等操作实现(二)

    上一篇:C# Windows登录界面进行截图,控制鼠标键盘等操作实现(一) - log9527 - 博客园 (cnblogs.com) 我们了解了要实现在Windows登录界面进行截图等操作必须满足的条件,这一篇我们主要通过代码实现这些条件。 首先先建一个项目A 下面一些windows自带非托管dll的调用类。 外部调用

    2024年02月12日
    浏览(29)
  • C# Windows登录界面进行截图,控制鼠标键盘等操作实现(三)

    在Windows登录界面进行截图,目前尝试到的以下的截图方法可以截取到图,其它的方式要么卡住,要么截出来是黑屏的,直接上代码: 操作鼠标键盘等操作可以参考本人另一篇文章:使用C#制作可以录制自动化执行Windows操作脚本工具——类似于按键精灵 - log9527 - 博客园 (cnbl

    2024年02月12日
    浏览(25)
  • python通过pyautogui库来控制鼠标和键盘

    PyAutoGUI是一个纯Python的GUI自动化工具,通过它可以用程序自动控制鼠标和键盘操作。它支持Windows, MacOS和Linux。 安装: 基本用法看代码,非常简单易用。 运行脚本的时候,MacOS会提示你打开系统偏好控制,要求允许运行脚本的程序控制电脑,允许即可。 先看一下屏幕坐标系:

    2024年02月09日
    浏览(38)
  • python模拟鼠标键盘操作

    优点:可以进行简单的重复人为操作,也相当于实现了傻瓜式的自动化 缺点:也很明显,在进行程序运行时,你不能对鼠标和键盘进行使用(不然就会改变鼠标位置和输入内容导致程序报错),所以最好使用一台空闲的电脑。 很多软件打开都需要自己的运行环境,所以需要

    2024年02月11日
    浏览(28)
  • python使用pyautogui控制鼠标与键盘(无屏幕内容)

            若是读者学过爬虫工具Selenium,对pyautogui必能快速上手,只需要不断实践复习即可熟练掌握。若是没学过当然没关系,我会以初学者的角度尽可能详细地向你解读新手遇到的许多问题。         请注意: 在本文章中,我会import pyautogui as auto                 在本

    2024年02月20日
    浏览(30)
  • pynput:用Python轻松掌握鼠标和键盘的控制

    引言 控制鼠标和键盘是自动化任务中的常见需求。在Python中,pynput库是一种强大的工具,可以帮助我们实现这些操作。本文将详细介绍pynput库的使用方法,并提供一些示例帮助读者快速上手。 1. 安装pynput库 首先,我们需要安装pynput库。可以使用pip命令来进行安装: 2. 控制鼠

    2024年02月04日
    浏览(29)
  • 【PyAutoGUI操作指南】02 鼠标控制功能+获取当前坐标+鼠标事件+鼠标滚动查询

    X坐标从左侧的0开始,向右增加,Y坐标从顶部的0开始,向下递增。 左上角的像素位于坐标0,0。如果屏幕分辨率为1920 x 1080,则右下角的像素将为1919,1079(因为坐标从0开始,而不是1)。 3.1.1 输出屏幕分辨率大小与鼠标光标位置 3.1.2 判断位置是否在屏幕内 3.2.1 moveTo()将鼠标

    2024年02月09日
    浏览(34)
  • python pyautogui+pynput鼠标键盘自动控制与监听

    参考https://blog.csdn.net/hfy1237/article/details/127960423 官方文档 https://pyautogui.readthedocs.io/en/latest/ 1、基本函数 常用函数列表 函数名 功能 基本 pyautogui.size() 返回包含分辨率的元组 pyautogui.PAUSE 每个函数的停顿时间,默认0.1s pyautogui.FAILSAFE 是否开启防故障功能,默认True 键盘 pyautogui

    2024年02月11日
    浏览(37)
  • Python 有趣的模块之pynupt——通过pynput控制鼠标和键盘

    🚀🚀🚀学会控制鼠标和键盘是实现自动化的捷径!🚀🚀🚀 pynput是第三方库,所以在使用pynput之前需要下载pynput包。 下载方式1: 在终端输入 pip install pynput 下载包 下载方式2: 进入pypi官网:https://pypi.org➡️搜索 pynput ➡️选择版本➡️点击pip install pynput 下载方式3: 点击

    2023年04月09日
    浏览(31)
  • Python的pyautogui库(鼠标,键盘操作篇)

    图片操作篇可以观看https://blog.csdn.net/m0_61741706/article/details/126898616 pyautogui库可以模仿人去点击输出和键盘,相比selenium库,pyautogui库更方便,更便捷 下载就用pip直接下载,后者用清华源下载  出现这样就是下载成功 之后引入库,并判断电脑屏幕的分辨率 接下来是控制鼠标移

    2024年02月12日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包