当前位置:  首页>> 技术小册>> Python3网络爬虫开发实战(下)

12.7 基于 Airtest 的 App 爬取实战

引言

在移动应用(App)数据日益丰富的今天,如何高效地从App中提取有价值的信息成为了数据分析、市场研究及自动化测试等领域的重要课题。Airtest 是一个跨平台的UI自动化测试框架,它支持Android、iOS以及Windows应用,通过图像识别与脚本语言(基于Python)的结合,为自动化测试及App数据爬取提供了强大的工具。本章将详细介绍如何使用Airtest进行App爬取的实战操作,包括环境搭建、基本操作、高级技巧及实际应用案例。

12.7.1 Airtest 环境搭建

1. 安装 AirtestIDE

AirtestIDE 是Airtest的官方集成开发环境(IDE),集成了Airtest框架及PocoUI自动化测试框架,支持一键录制、脚本编写、实时预览等功能,极大地方便了开发和测试人员。

  • 访问Airtest的官方网站(http://airtest.netease.com/),下载并安装AirtestIDE。
  • 安装完成后,打开AirtestIDE,进行基本设置,如设置Android/iOS设备连接等。
2. 连接设备
  • Android设备:确保设备已开启开发者模式,并允许USB调试。使用USB线连接电脑后,AirtestIDE会自动识别设备。
  • iOS设备:由于iOS的限制,通常需要借助Mac电脑和Xcode进行无线调试,或使用第三方工具如Airtest提供的iOS-Tagent进行连接。
3. 依赖库安装

AirtestIDE内部集成了大部分所需库,但如有特殊需求,可通过Python包管理器pip安装额外库。

12.7.2 Airtest 基本操作

1. 录制与生成脚本
  • 录制功能:在AirtestIDE中,可以使用录制功能快速生成基础脚本。点击“录制”按钮,在设备上进行操作,IDE会自动生成对应的脚本代码。
  • 脚本编辑:录制生成的脚本可能需要进一步编辑以满足实际需求。AirtestIDE提供了代码编辑区,支持Python语法,可以添加条件判断、循环等控制结构。
2. 图像识别

Airtest的一个核心功能是图像识别,它允许用户通过截图来定位界面元素。

  • 截图:在AirtestIDE中,可以使用“截图”工具截取界面中的特定元素。
  • 使用截图定位:在脚本中,通过touch(Template(r"path/to/image.png", record_pos=(0.5, 0.5), resolution=(1080, 1920)))的方式,利用截图进行元素点击等操作。
3. PocoUI 辅助

PocoUI是Airtest提供的另一套UI自动化框架,基于UI控件的层级关系进行元素定位和操作,与图像识别形成互补。

  • 启用PocoUI:在AirtestIDE中,可以通过连接设备后自动检测或手动指定Poco服务来启用PocoUI。
  • 使用Poco进行元素定位:通过Poco的选择器(如id、text、desc等)来定位元素,并执行点击、输入等操作。

12.7.3 高级技巧

1. 异常处理

在自动化脚本中,添加异常处理机制可以有效提高脚本的健壮性和容错能力。

  1. try:
  2. # 尝试执行的代码
  3. touch(Template(r"path/to/image.png"))
  4. except Exception as e:
  5. print(f"发生错误:{e}")
  6. # 错误处理代码
2. 等待机制

App界面元素的加载和显示可能存在延迟,使用等待机制可以提高脚本的稳定性。

  1. wait(Template(r"path/to/image.png", timeout=10)) # 等待最多10秒
3. 滑动与拖拽

滑动和拖拽是App操作中常见的交互方式,Airtest提供了相应的API来实现这些操作。

  1. swipe((x1, y1), (x2, y2), duration=1.0) # 从(x1, y1)滑动到(x2, y2),持续时间为1秒
  2. drag((x1, y1), (x2, y2), duration=1.0) # 拖拽操作,参数与滑动相同

12.7.4 实战案例:爬取某电商App的商品信息

假设我们需要从一款电商App中爬取特定类别的商品信息,包括商品名称、价格、销量等。

1. 分析目标App
  • 确定目标页面:首先,确定需要爬取的商品列表页面。
  • 识别关键元素:通过AirtestIDE的截图功能,识别并截取商品列表中的关键元素,如商品图片、商品名称、价格标签等。
2. 编写脚本
  • 初始化:设置设备连接,启动App。
  • 定位并遍历商品:利用PocoUI或图像识别定位到商品列表的第一个商品,然后通过滑动屏幕遍历所有商品。
  • 提取信息:对于每个商品,定位到其名称、价格等元素,并提取文本信息。
  • 存储数据:将提取的数据保存到本地文件或数据库中。
3. 脚本执行与调试
  • 在AirtestIDE中运行脚本,观察执行效果。
  • 根据需要调整等待时间、滑动速度等参数,确保脚本稳定运行。
  • 对可能出现的异常进行调试,并添加相应的异常处理代码。
4. 数据分析
  • 将爬取到的数据存储到合适的数据结构(如Pandas DataFrame)中。
  • 使用数据分析工具(如Pandas、NumPy)对数据进行清洗、转换和统计分析。
  • 可视化分析结果,如生成商品价格分布图、销量排行榜等。

结论

通过本章的学习,我们掌握了基于Airtest的App爬取实战技能,包括环境搭建、基本操作、高级技巧以及一个具体的实战案例。Airtest凭借其跨平台、易上手及强大的图像识别能力,在App自动化测试和数据爬取领域具有广泛的应用前景。未来,随着移动应用的不断发展和更新,我们将需要不断探索和学习新的技术和方法,以应对更加复杂和多样的挑战。


该分类下的相关小册推荐: