基于 Appium 的 App 爬取实战

本节中我们会完整地讲述如何用 Appium 爬取一个 App。

准备工作

本节的准备工作和 12.4 节基本一样,请参考那里。

另外,本节会用到一个日志输出库 loguru,可以使用 pip3 工具安装:

pip3 install loguru

思路分析

首先,我们观察一下整个 app5 的交互流程,其首页分条显示了电影数据,每个电影条目都包括封面、标题、类别和评分 4 个内容,点击一个电影条目,就可以看到这个电影的详情介绍,包括标题、类别、上映时间、评分、时长、电影简介等内容。

可见详情页的内容远比首页丰富,我们需要依次点击每个电影条目,抓取看到的所有内容,把所有电影条目的信息都抓取下来后回退到首页。

另外,首页一开始只显示 10 个电影条目,需要上拉才能显示更多数据,一共 100 条数据。所以为了爬取所有数据,我们需要在适当的时候模拟手机的上拉操作,以加载更多数据。

综上,这里总结出基本的爬取流程。

  • 遍历现有的电影条目,依次模拟点击每个电影条目,进人详情页。

  • 爬取详情页的数据,爬取完毕后模拟点击回退按钮的操作,返回首页。

  • 当首页的所有电影条目即将爬取完毕时,模拟上拉操作,加载更多数据。

  • 在爬取过程中,将已经爬取的数据记录下来,以免重复爬取。

  • 100 条数据全部爬取完毕后,终止爬取。

基本实现

现在我们着手实现整个爬取流程吧。

在编写代码的过程中,我们依然需要用 Appium 观察现有 App 的源代码,以便编写节点的提取规则。和 12.4 节类似,启动 Appium 服务,然后启动 Session,打开电脑端的调试窗口,如图 12-57 所示。

上拉加载更多数据

去重、终止和保存数据

保存数据

运行结果

总结

本节我们通过一个实战案例介绍了利用 Appium 爬取 App 数据的过程,学完这节后,App 的自动化爬取不再是难题。