用pyautogui给粉丝们点赞
2024-06-10 加入收藏
用pyautogui给粉丝们点赞【#172】
欢迎访问「Python3分钟」系列。「花3分钟时间」,学习或温习一个Python知识点。今天是第172。
❝上期的「Python3分钟」系列给大家介绍了
pyautogui
的基本使用。但是有细心的小伙伴发现了,我并没有介绍
❞pyautogui
模块最核心的使用方法 -- 「图片定位」
「如果你还不会pyautogui
模块的基本使用,请进入下面的传送门学习:」
解放双手!Python自动化必知必会的小技能【#171】
屏幕图片定位
上期我们只能通过坐标点去操作鼠标的位置,如果每次都用这种方式定位,是非常不方便的。
所以如果能识别出指定元素的坐标,那真的是极极好。。
使用pyautogui
模块定位指定元素坐标也很简单,先把图片元素文件的路径传入pyautogui模块的locateOnScreen
或locateAllOnScreen
函数即可。
❝locateOnScreen函数只返回第一处识别的位置信息;
locateAllOnScreen函数则返回匹配到所有的识别的位置信息
这个匹配非模糊匹配,匹配对象和传入对象要完全一样才能正确匹配。
❞
匹配桌面文件夹图标
我桌面上有两个文件夹;截取文件夹图标;
结合代码识别文件夹坐标位置信息;
识别单个文件夹图标
import pyautogui
folder = pyautogui.locateOnScreen('icon.png')
print(folder)
运行结果:
Box(left=17, top=88, width=82, height=68)
识别多个文件夹图标
import pyautogui
folders = pyautogui.locateAllOnScreen('icon.png')
print(list(folders))
运行结果:
[Box(left=17, top=88, width=82, height=68), Box(left=106, top=146, width=82, height=68)]
转成x,y坐标
从返回的结果看出,返回的并不是一个点的坐标数据,而是一个块状的范围数据。
所以我们需要把这个块状
数据转为点
数据,以方便假鼠标
能更方便去点击。
方法一
可以直接使用pyautogui.locateCenterOnScreen
方法获得匹配中的图标中心坐标;
import pyautogui
print(pyautogui.locateCenterOnScreen('icon.png'))
运行结果:
Point(x=58, y=122)
但这个方式只能取到一个坐标。
方法二
使用pyautogui.center
函数,获得块状数据
的中心点坐标。
import pyautogui
folder = pyautogui.locateOnScreen('icon.png')
print(pyautogui.center(folder))
运行结果:
Point(x=58, y=122)
使用这个方法可以遍历块状数据
批量获得对应的中心点坐标数据。
综合实例
用pyautogui
模块做一个简单B站评论点赞器:
需要识别的赞
图标:
还有就是当识别到已经底部时,代码退出运行,
我找到这一个标识:
点赞逻辑也很简单,如果在界面上没有识别到赞
的图标则页面往下滚动,
如果识别到了,则对其进行点击,
如果识别到底部标识,则退出程序。
相关图片标识:
示例代码:
import pyautogui
pyautogui.FAILSAFE = True
end_flag = False
def click_like(box_data):
for i in box_data:
pyautogui.click(pyautogui.center(i))
print('点赞成功!')
while not end_flag:
end_flag = pyautogui.locateCenterOnScreen('end.png')
targets = pyautogui.locateAllOnScreen('icon.png')
if targets:
click_like(targets)
pyautogui.scroll(clicks=-800)
print('往下滚动!')
print("全部点完,退出程序!")
运行效果图:
❝图标识别需要费点时间,所以需要耐心等待,并不是代码问题。