直接源码吧
#!/usr/bin/python3
# -*- coding: utf-8 -*-
# @Time : 2020/7/7 10:09
# @Author : liangjianghao
# @FileName: Final.py
# @Software: PyCharm
import os
import cv2
import time
import random
from PIL import Image
import numpy
# 上传照片到电脑
def screen():
# 截图保存在手机上
os.system('adb shell screencap -p /sdcard/screen.png')
# 传到电脑上
os.system('adb pull /sdcard/screen.png')
def findImg(target, template): # opencv模板匹配----多目标匹配
print('匹配图片')
# 读取目标图片
target = cv2.imread(target)
# 读取模板图片
template = cv2.imread(template)
# 获得模板图片的高宽尺寸
theight, twidth = template.shape[:2]
# 执行模板匹配,采用的匹配方式cv2.TM_SQDIFF_NORMED
# print(theight, twidth)
result = cv2.matchTemplate(target, template, cv2.TM_SQDIFF_NORMED) # CV_TM_SQDIFF_NORMED
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)
cv2.rectangle(target, min_loc, (min_loc[0] + twidth, min_loc[1] + theight), (0, 0, 225), 2)
strmin_val = str(min_val)
# 初始化位置参数
temp_loc = min_loc
other_loc = min_loc
numOfloc = 1
# 第一次筛选----规定匹配阈值,将满足阈值的从result中提取出来
# 对于cv2.TM_SQDIFF及cv2.TM_SQDIFF_NORMED方法设置匹配阈值为0.01
threshold = 0.01 # 这个值从0.01到0.05之间
loc = numpy.where(result < threshold)
if loc:
# 遍历提取出来的位置
for other_loc in zip(*loc[::-1]):
# print(other_loc[0],other_loc[1])
yield other_loc
else:
return False
if __name__ == '__main__':
sj = random.uniform(20, 40)
for i in range(100):
screen()
print('截屏某用户的粉丝列表')
xy = findImg('screen.png','template.png')
for index,d in enumerate(xy):
print('找到第%s个:%s'%(str(index+1),d))
os.system('adb shell input tap %s %s'%(d[0]+100,d[1]+30))
time.sleep(sj)
# 翻页滑动按钮
os.system('adb shell input swipe 548 1500 540 225 511')
print('正在翻页。。。')
time.sleep(sj)
简单说一下吧,首先,你要把adb配置好,这个去查一下相关资料,用模拟器或者安卓手机都行。
像这样 只要adb devices 出现结果就说明正常工作了 我这里链接的是夜神模拟器(62001)
image.png
然后打开手机或者模拟器上的抖音 转到粉丝详情页
screen.png
然后运行我们的代码,原理就是在这个详情页里面找关注按钮这个图,我用的这个,你们也可以自己截取,当然名字要改成template.png(或者改代码里图片名字)
template.png
找到关注按钮 关注 关注 关注。。。 然后下一页 关注 关注 关注
这么速度太快 所以我延时设置的比较长 可以看情况修改
sj = random.uniform(20, 40)
网友评论