首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
12.1 Charles 抓包工具的使用
12.2 mitmproxy 抓包工具的使用
12.3 mitmdump 实时抓包处理
12.4 Appium 的使用
12.5 基于 Appium 的 App 爬取实战
12.6 Airtest 的使用
12.7 基于 Airtest 的 App 爬取实战
12.8 手机群控爬取实战
12.9 云手机的使用
13.0 Android 逆向
13.1 jadx 的使用
13.2 JEB 的使用
13.3 Xposed 框架的使用
13.4 基于 Xposed 的爬取实战案例
13.5 Frida 的使用
13.6 SSL Pining 问题的解决方案
13.7 Android 脱壳技术简介与实战
13.8 利用 IDA Pro 静态分析和动态调试 so 文件
13.9 基于 Frida-RPC 模拟执行 so 文件
13.10 基于 AndServer-RPC 模拟执行 so 文件
13.11 基于 unidbg 模拟执行 so 文件
14.1 页面智能解析简介
14.2 详情页智能解析算法简介
14.3 详情页智能解析算法的实现
14.4 列表页智能解析算法简介
14.5 列表页智能解析算法的实现
14.6 如何智能分辨列表页和详情页
15.1 Scrapy框架介绍
15.2 Scrapy入门
15.3 Selector 的使用
15.4 Spider 的使用
15.5 Downloader Middleware的使用
15.6 Spider Middleware的使用
15.7 Item Pipeline的使用
15.8 Extension的使用
15.9 Scrapy 对接 Selenium
15.10 Scrapy 对接 Splash
15.11 Scrapy 对接 Pyppeteer
15.12 Scrapy 规则化爬虫
15.13 Scrapy 实战
16.1 分布式爬虫理念
16.2 Scrapy-Redis原理和源码解析
16.3 基于Scrapy-Redis的分布式爬虫实现
16.4 基于Bloom Filter进行大规模去重
16.5 基于RabbitMQ的分布式爬虫
17.1 Scrapyd和ScrapydAPI的使用
17.2 Scrapyd-Client 的使用
17.3 Gerapy 爬虫管理框架的使用
17.4 将Scrapy 项目打包成 Docker 镜像
17.5 Docker Compose 的使用
17.6 Kubernetes的使用
17.7 用 Kubernetes 部署和管理 Scrapy 爬虫
17.8 Scrapy 分布式爬虫的数据统计方案
17.9 基于Prometheus和Grafana的分布式爬虫监控方案
当前位置:
首页>>
技术小册>>
Python3网络爬虫开发实战(下)
小册名称:Python3网络爬虫开发实战(下)
### 12.5 基于 Appium 的 App 爬取实战 #### 引言 在移动互联网时代,移动应用(App)已成为数据交互与展示的重要载体。传统基于网页的爬虫技术虽然成熟,但在面对移动应用数据时却显得力不从心。Appium,作为一个开源的自动化测试工具,因其支持多平台(iOS、Android)、多语言(Java、Python等)及强大的模拟用户交互能力,逐渐被开发者和爬虫工程师应用于移动应用的数据抓取中。本章将详细介绍如何使用Appium进行移动应用爬取的实战操作,涵盖环境搭建、基本配置、元素定位、数据抓取及异常处理等关键环节。 #### 12.5.1 Appium 环境搭建 ##### 1. 安装JDK 由于Appium底层依赖Java环境,首先需要安装JDK(Java Development Kit)。可以从Oracle官网下载并安装适合您操作系统的JDK版本。安装完成后,需要配置环境变量JAVA_HOME,并将`%JAVA_HOME%\bin`和`%JAVA_HOME%\jre\bin`添加到系统的PATH变量中。 ##### 2. 安装Node.js与npm Appium通过npm(Node Package Manager)进行包管理。因此,需要安装Node.js,npm会随Node.js一同安装。从Node.js官网下载并安装最新版本,安装过程中会自动配置环境变量。 ##### 3. 安装Appium Server 使用npm安装Appium Server:打开命令行工具,输入`npm install -g appium`命令进行全局安装。安装完成后,可以通过命令行输入`appium`命令启动Appium Server。 ##### 4. 安装Appium Desktop(可选) Appium Desktop是一个图形界面的Appium版本,方便初学者使用。从Appium官网下载对应操作系统的安装包并安装。 ##### 5. 安装Android SDK 或 Xcode - **Android**: 下载并安装Android Studio,它包含了Android SDK。在Android Studio中配置AVD(Android Virtual Device)管理器,创建并启动一个Android虚拟机。 - **iOS**: 安装Xcode,并通过Xcode下载iOS SDK。此外,需要配置macOS的开发环境,包括安装Homebrew、libimobiledevice等依赖库。 ##### 6. 配置Appium环境 在Appium Server或Appium Desktop中,根据目标平台(Android/iOS)配置相应的Desired Capabilities,包括平台名称、设备名称、应用包名(App Package)、应用活动名(App Activity,仅限Android)等。 #### 12.5.2 Python客户端库安装 使用Python进行Appium自动化时,需要安装`Appium-Python-Client`库。通过pip安装:`pip install Appium-Python-Client`。 #### 12.5.3 编写爬虫脚本 ##### 1. 导入必要的库 ```python from appium import webdriver from appium.webdriver.common.touch_action import TouchAction import time ``` ##### 2. 初始化WebDriver ```python desired_caps = {} if platform_name == 'Android': desired_caps['platformName'] = 'Android' desired_caps['deviceName'] = '你的设备名' desired_caps['appPackage'] = '应用的包名' desired_caps['appActivity'] = '应用的主活动名' elif platform_name == 'iOS': desired_caps['platformName'] = 'iOS' desired_caps['deviceName'] = '你的设备名' desired_caps['bundleId'] = '应用的bundleId' desired_caps['automationName'] = 'XCUITest' driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) ``` ##### 3. 元素定位与操作 使用Appium的元素定位策略(如id、name、accessibility id、xpath等)来定位页面元素,并执行点击、输入文本等操作。 ```python # 定位并点击按钮 button = driver.find_element_by_accessibility_id('按钮的accessibility id') button.click() # 输入文本 input_field = driver.find_element_by_id('输入框的id') input_field.send_keys('要输入的文本') # 滑动屏幕 action = TouchAction(driver) action.press(x=100, y=500).wait(1000).move_to(x=100, y=100).release().perform() ``` ##### 4. 数据抓取 根据页面元素的内容抓取数据,可以使用`text`属性获取文本,或使用`get_attribute`方法获取更多属性。 ```python # 获取文本内容 text = driver.find_element_by_id('文本元素的id').text # 获取其他属性 attribute = driver.find_element_by_id('元素id').get_attribute('attributeName') ``` ##### 5. 异常处理与日志记录 在爬虫脚本中加入异常处理逻辑,确保程序在遇到错误时能够优雅地处理并继续执行或记录错误信息。 ```python try: # 尝试执行的代码 except Exception as e: print(f"发生错误:{e}") # 错误处理逻辑 ``` #### 12.5.4 性能优化与注意事项 - **减少网络请求**:合理安排元素定位和数据抓取的顺序,避免不必要的页面跳转和刷新。 - **使用合适的元素定位策略**:优先考虑性能较好的定位方式,如id、accessibility id等。 - **异步处理**:对于不依赖页面交互的数据,可以考虑使用异步方式抓取,提高抓取效率。 - **遵守法律与道德规范**:在抓取数据前,务必了解并遵守相关法律法规及目标应用的使用条款,尊重用户隐私和数据安全。 #### 12.5.5 实战案例:抓取某新闻App的热门文章 以一个新闻App为例,展示如何使用Appium抓取其热门文章列表的标题和链接。首先,通过Appium Desktop或命令行工具启动Appium Server,并配置好Desired Capabilities。然后,编写Python脚本,利用元素定位策略找到热门文章列表,遍历列表中的每个元素,抓取其标题和链接。最后,将抓取的数据保存到文件中或数据库中。 #### 结语 通过本章的学习,我们掌握了基于Appium进行移动应用爬取的基本流程和关键技术点。Appium以其强大的功能和灵活的配置,为移动应用数据的自动化抓取提供了有力支持。然而,随着移动应用技术的不断发展,反爬机制也在不断加强,因此,在实际应用中还需不断学习和探索新的技术和方法,以应对各种挑战。
上一篇:
12.4 Appium 的使用
下一篇:
12.6 Airtest 的使用
该分类下的相关小册推荐:
Python合辑4-130个字符串操作示例
Python合辑2-字符串常用方法
实战Python网络爬虫
Python机器学习基础教程(上)
Python与办公-玩转PPT
剑指Python(磨刀不误砍柴工)
Python编程轻松进阶(二)
Python合辑11-闭包函数
Python神经网络入门与实践
Python爬虫入门与实战开发(上)
Python合辑14-面向对象编程案例(下)
Python合辑7-集合、列表与元组