python实现QQ背景墙自动点赞

1.思路

  • 通过pyautogui可以实现鼠标点击、滚动鼠标、截屏等操作。由此功能实现打开页面,进行点赞。
  • aircv可以从大图像获得小图像的位置,利用pyautogui截屏得到的图片,可以在页面获取到每一个👍的位置,进行点击。
  • 当前页面点击完之后,通过pyautogui滚动鼠标的功能继续向下翻。从而实现循环。
    - !](https://img-blog.csdnimg.cn/20200325113636966.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyNDAxMzY5,size_16,color_FFFFFF,t_70)

2. 参考

pyautogui自动化控制鼠标和键盘操作
aircv通过大图像获得小图像的位置

3. 安装包

  • 这里利用了清华的镜像,不用镜像容易下载失败。
  • 下载的opencv-contrib-python和opencv_python版本也要带上。如果已经下载了不对版本,可以使用pip uninstall 删除。
	pip install aircv
	pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-contrib-python==3.4.2.16 
	pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv_python==3.4.2.16 
	pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyautogui

4. 准备工作

在这里插入图片描述
需要把这个截下来图片放在代码的同目录下

5. 代码

import cv2
import aircv as ac
import pyautogui
import time
import os

#获取赞所在的位置
def mousepos(img1,img2): 
    imsrc = ac.imread(img1) # 原始图像
    imsch = ac.imread(img2) # 带查找的部分
    match_result=ac.find_all_template(imsrc, imsch,0.80)
    
    #提取出中心点的横纵坐标
    points=[]
    for i in match_result:
        points.append((i['result']))
    return points


def begin():
    #截屏
    time.sleep(1)
    img1 = pyautogui.screenshot()
    if os.path.exists('1.png'):  # 如果文件存在
        # 删除文件,可使用以下两种方法。
        os.remove('1.png')  
    img1.save('1.png')
    
    #由于匹配相似度不同,为了减少错误,把纵坐标不在点赞的那一条的删除
    pos=mousepos('1.png','test.png')
    for i in pos[:]:
        if i[0]!=pos[0][0]:
            pos.remove(i)
    print(pos)
    
    #点击
    for i in pos:
        pyautogui.moveTo(i[0], i[1])
        pyautogui.click(clicks=10, interval=0.2)
        time.sleep(1)
    
    #滚动鼠标
    pyautogui.scroll(-300, x=100, y=100)

#这一段仅仅是根据所在位置打开页面,这一段可以不要,自己打开点赞页面也行。
def openpage ():
    pyautogui.click(x=1596 ,y=1063,clicks=1, interval=2)
    pyautogui.click(x=1539 ,y=272,clicks=1, interval=2)
    pyautogui.click(x=896, y=581,clicks=1, interval=2)
    
if __name__ == '__main__':
    openpage();
    for i in range(20):    #根据自己的需要设置次数
        begin()    

  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值