Airtest实现在手机界面快速批量采集数据

Airtest实现在手机界面快速批量采集数据

一、问题

  • Airtest使用的poco方法比较慢,寻找差不多一周,看完这篇文章能节省一周时间,希望帮到大家。

请添加图片描述

二、解决思路

使用Airtest图像识别,这样就会速度上提升效率。

三、解决办法

  • 使用页面规律,要找到每条数据的附近规律(一般是图像规律),使用find_all(规律图像)计算得到坐标,再依据和图像同一条数据的坐标,计算得到差值四个(四个差值分别是左上和右下的X,Y坐标差值),图像和差值坐标经过计算得到每条数据的坐标,依据每条数据的坐标截图经过ocr识别出数据并保存。

    (图像和poco方法都适用)

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

四、代码实现

# -*- encoding=utf8 -*-
__author__ = "Administrator"from airtest.core.api import *
import randomfrom airtest.aircv import *from PIL import Image
import pytesseract
import csvimport pyocr
import pyocr.buildersauto_setup(__file__)def zuobiao_new_txt(m,n):# 获取每个特征的图片坐标并完成转换# Airtest的多图查找与两图对比title_shibie = []# 参数==========日期,数据results_m= find_all(m)results_n= find_all(n)print("---------------日期-----------------")print("识别到图片的个数{}".format(len(results_m)))print(results_m)print(results_m[0]['rectangle'][0][0])print("----------------数据----------------")print(results_n)# x_0的差值m_x_0 = int(results_m[0]['rectangle'][0][0])n_x_0 = int(results_n[0]['rectangle'][0][0])x_0 =m_x_0 - n_x_0# y_0的差值m_y_0 = int(results_m[0]['rectangle'][0][1])n_y_0 = int(results_n[0]['rectangle'][0][1])y_0 = m_y_0 - n_y_0# x_1的差值m_x_1 = int(results_m[0]['rectangle'][2][0])n_x_1 = int(results_n[0]['rectangle'][2][0])x_1 = m_x_1 - n_x_1# y_1的差值m_y_1 = int(results_m[0]['rectangle'][2][1])n_y_1 = int(results_n[0]['rectangle'][2][1])y_1 = m_y_1 - n_y_1print(["两图坐标差",x_0,y_0,x_1,y_1])for i in range(len(results_m)):print("循环第{}开始".format(i))print(type(results_m[i]))print([results_m[i]['rectangle'][0]])print([results_m[i]['rectangle'][2]])new_01 = int(results_m[i]['rectangle'][0][0]) - x_0new_02 = int(results_m[i]['rectangle'][0][1]) - y_0new_03 = int(results_m[i]['rectangle'][2][0]) - x_1new_04 = int(results_m[i]['rectangle'][2][1]) - y_1print(["截图文字识别坐标",new_01,new_02,new_03,new_04])# 局部截图并识别screen = G.DEVICE.snapshot()local = aircv.crop_image(screen,(new_01,new_02,new_03,new_04))# 保存局部截图到指定文件夹中pil_image = cv2_2_pil(local)# pil_image.save("D:/test/score0.png", quality=99, optimize=True)  image = Image.open(r'D:/test/score0.png')a_image = str(i)pil_image.save(r"G:/多多买菜数据/识别图片/{}.png".format(a_image), quality=99, optimize=True)sleep(random.randint(3,5))# 识别中文"G:\多多买菜数据\识别图片\20200922200802340.png"# 获取所有可用的OCR引擎tools = pyocr.get_available_tools()# 选择使用Tesseract引擎tool = tools[0]# 加载需要识别的图片# r'G:/多多买菜数据/识别图片/3.png'img = Image.open(r'G:/多多买菜数据/识别图片/{}.png'.format(a_image))# 进行文字识别text = tool.image_to_string(img, builder=pyocr.builders.TextBuilder(),lang='chi_sim')print("-----------识别出来的文字为:--------------")print(text)title_shibie.append(text)# log("识别出来的文字为:"+text)return(title_shibie)if __name__=="__main__":with open('多多商品数据02.csv', 'a', encoding='utf-8', newline='') as csvfile:  # 新建并打开comment_con.csv文件writer = csv.writer(csvfile)writer.writerow(['商品标题', '商品类别'])  # 写第一行titles = []# 次数设置for xunhuan in range(1):# 放入商品标题print("第几个{}标题页面循环".format(xunhuan))# 获取截图左上和右下的坐标# 循环截图处计算标题的相应坐标# for jietu_zuobiao in range(len(m_new)):conte = zuobiao_new_txt(Template(r"tpl1707239618153.png", record_pos=(0.403, -0.133), resolution=(720, 1600)),Template(r"tpl1707239627040.png", record_pos=(-0.201, -0.124), resolution=(720, 1600)))print(conte)if conte in titles:print("数据已经存在")else:print(conte)writer.writerow([conte,"蔬菜"])titles.append(conte)# 页面滑动random_int_1 = random.randint(500,502)random_int_2 = random.randint(1500,1520)    random_int_3 = random.randint(502,503)random_int_4 = random.randint(600,650)swipe([random_int_1,random_int_2],[random_int_3,random_int_4])print("大页面滑动操作")

五、总结

  • python最大的优势是车轮(第三方库),不用我们去扣代码,上面的解决办法借助了ocr,我们一直应用于验证码识别,当然这种识别正确率达不到100%,要想提高正确率,借助于谷歌这些大平台服务,收费的服务也很棒,正确率确实高,上面的代码是借助于免费的第三方库,也觉得够用,当然大家有更好的办法,欢迎大家评论转发交流,一起共享更好的技术。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2775609.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【数据结构】堆(创建,调整,插入,删除,运用)

目录 堆的概念: 堆的性质: 堆的存储方式: 堆的创建 : 堆的调整: 向下调整: 向上调整: 堆的创建: 建堆的时间复杂度: 向下调整: 向上调整&#xff…

Nature Machine Intelligence 使用机器学习驱动的可拉伸智能纺织手套捕捉复杂的手部动作和物体交互

研究背景 对灵巧手运动的精确实时跟踪在人机交互、元宇宙、机器人和远程医疗等领域有着广泛的应用。当前的可穿戴设备中的大多数仅用于检测精度有限的特定手势,并且没有解决与设备的可靠性、准确性和可清洗相关的挑战。对传感器直接放置在用户的手上有严格的要求&am…

3.2 Verilog 时延

关键词:时延, 惯性时延 连续赋值延时语句中的延时,用于控制任意操作数发生变化到语句左端赋予新值之间的时间延时。 时延一般是不可综合的。 寄存器的时延也是可以控制的,这部分在时序控制里加以说明。 连续赋值时延一般可分为…

懒人精灵 之 Lua 捕获 json解析异常 ,造成的脚本停止.

Time: 2024年2月8日20:21:17 by:MemoryErHero 1 异常代码 Expected value but found T_END at character 12 异常代码 Expected value but found T_OBJ_END at character 223 处理方案 - 正确 json 示范 while true do--Expected value but found T_END at character 1--Ex…

2024-02-08 Unity 编辑器开发之编辑器拓展1 —— 自定义菜单栏与窗口

文章目录 1 特殊文件夹 Editor2 在 Unity 菜单栏中添加自定义页签3 在 Hierarchy 窗口中添加自定义页签4 在 Project 窗口中添加自定义页签5 在菜单栏的 Component 菜单添加脚本6 在 Inspector 为脚本右键添加菜单7 加入快捷键8 小结 1 特殊文件夹 Editor ​ Editor 文件夹是 …

解决用DeepL翻译文档后不能编辑问题

第一步:将原始文档另存为.xml格式。 在编辑软件中,选择“文件”-->“另存为”-->选择xml格式。如下图所示: 第二步:使用记事本打开xml文档。 在保存好的xml文档上右击,选择“打开方式”为记事本。如下图所示&a…

Flask基础学习

1.debug、host、port 模式修改 1) debug模式 默认debug模式是off,在修改代码调试过程中需要暂停重启使用,这时可修改on模式解决。 同时在debug模式开启下可看到出错信息。 下面有关于Pycharm社区版和专业版修改debug模式的区别 专业版 社区版&#…

网络编程-Socket套接字

目录 1.网络编程 1.1定义与图解 1.2基本概念 (1)发送端和接收端 (2)请求和响应 (3)客户端和服务端 2.Socket套接字 2.1定义 2.2分类 (1)流套接字 (2&#xff…

通过Demo学WPF—数据绑定(二)

准备 今天学习的Demo是Data Binding中的Linq: 创建一个空白解决方案,然后添加现有项目,选择Linq,解决方案如下所示: 查看这个Demo的效果: 开始学习这个Demo xaml部分 查看MainWindow.xaml: …

linux下的预编译、编译、汇编、连接,生成单独文件,感受编译过程

linux下的预编译、编译、汇编、连接,生成单独文件。首先需要确认系统安装了gcc编译器,输入gcc -v或者g -v,如果能看到版本号等信息就是已经存在了,如图(centos7): 然后随便vim产生一个.cpp文件&…

openGauss学习笔记-216 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-CPU

文章目录 openGauss学习笔记-216 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-CPU216.1 CPU216.2 查看CPU状况216.3 性能参数分析 openGauss学习笔记-216 openGauss性能调优-确定性能调优范围-硬件瓶颈点分析-CPU 获取openGauss节点的CPU、内存、I/O和网络资源使用情况…

《游戏引擎架构》 -- 学习2

声明,定义,以及链接规范 翻译单元 声明与定义 链接规范 C/C 内存布局 可执行映像 程序堆栈 动态分配的堆 对象的内存布局 kilobyte 和 kibibyte 流水线缓存以及优化 未完待续。。。

数学建模-灰色预测最强讲义 GM(1,1)原理及Python实现

目录 一、GM(1,1)模型预测原理 二、GM(1,1)模型预测步骤 2.1 数据的检验与处理 2.2 建立模型 2.3 检验预测值 三、案例 灰色预测应用场景:时间序列预测 灰色预测的主要特点是模型使用的…

机器人学、机器视觉与控制 上机笔记(第一版译文版 2.1章节)

机器人学、机器视觉与控制 上机笔记(第一版译文版 2.1章节) 1、前言2、本篇内容3、代码记录3.1、新建se23.2、生成坐标系3.3、将T1表示的变换绘制3.4、完整绘制代码3.5、获取点*在坐标系1下的表示3.6、相对坐标获取完整代码 4、结语 1、前言 工作需要&a…

2022中科院期刊分区小类学科-COMPUTER SCIENCE, ARTIFICIAL INTELLIGENCE 计算机:人工智能一览

从左到右的次序依次为:序号,刊名,ISSN码以及分区: 1 IEEE Transactions on Cybernetics 2168-2267 1区 2 Nature Machine Intelligence 2522-5839 1区 3 Information Fusion …

ChatGPT高效提问—prompt常见用法(续篇四)

ChatGPT高效提问—prompt常见用法(续篇四) 1.1 知识生成 ​ 知识生成是指使用自然语言处理技术,通过ChatGPT等AI模型生成与特定主题相关的知识、文本或回答。在知识生成过程中,模型接收prompt输入的问题、指令或上下文信息&…

ONLYOFFICE文档8.0新功能浅探

ONLYOFFICE文档8.0新功能浅探 上个月末这个月初的几天,ONLYOFFICE版本更新了!更新到了一个比较整的大的版本号,8.0版本,看来这个生产力工具的升级速度基本上能保持每年两个版本号的速度,还是很快的,一般来…

获取视频帧图片

在实现了minio文件上传的基础上进行操作 一、编写pom <dependency><groupId>org.jcodec</groupId><artifactId>jcodec</artifactId><version>0.2.5</version> </dependency> <dependency><groupId>org.jcodec<…

【开源项目阅读】Java爬虫抓取豆瓣图书信息

原项目链接 Java爬虫抓取豆瓣图书信息 本地运行 运行过程 另建项目&#xff0c;把四个源代码文件拷贝到自己的包下面 在代码爆红处按ALTENTER自动导入maven依赖 直接运行Main.main方法&#xff0c;启动项目 运行结果 在本地磁盘上生成三个xml文件 其中的内容即位爬取…

ubuntu22.04 安装部署05:禁用默认显卡驱动

一、相关文章 ubuntu22.04安装部署03&#xff1a; 设置root密码-CSDN博客 《ubuntu22.04装部署01&#xff1a;禁用内核更新》 《ubuntu22.04装部署02&#xff1a;禁用显卡更新》 二、场景说明 Ubuntu22.04 默认显卡驱动&#xff0c;如果安装cuda&#xff0c;需要单独安装显…