第11章-移动端数据抓取
一、移动端前导知识
1.1 UIAutomator的介绍
UIAutomator是google提供的⽤来做安卓⾃动化测试(可以对第三方App进行测试,获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作)的⼀个java库,类似selinium框架,基于accessibility服务(Android的一个辅助功能,如点击功能;继承于service类—Android四大组件之一)
缺陷:
- 测试脚本只能⽤Java语⾔开发
- 测试脚本要打包成jar包或者apk包上传到设备上才能实现
1.2 Android四大组件
- Activity:是一种展示型组件,主要是向用户展示一个界面,并且可以接收用户的输入信息从而和用户进行交互(相当于活动窗口)
- Service:是一种计算型组件,用于在后台执行一系列计算任务
- BroadcastReceiver:是一种消息型组件,用于在不同组件乃至不同应用之间传递消息
- ContentProvider:是一种数据共享型组件,用于向其他组件乃至其他应用共享数据
1.3 UIAutomator2的介绍
(1)UIAutomator2:又称U2,它的优势:
- UI⾃动化编写采⽤Python,学习成本低
- UI控件识别有专⻔的⼯具 weditor
项⽬地址https://github.com/openatx/uiautomator2
(2)UIAutomator2的执⾏流程:
- 在移动设备上安装atx-agent(守护进程),随后atx-agent启动U2服务(默认7912端⼝)进⾏监听
- 在PC端来编写脚本发送到移动端的7912端口(相当于发送HTTP请求到移动设备的server端)
- 移动设备通过wifi或usb接收到了PC上发来的HTTP请求(atx-agent会自动转化为U2代码),执⾏自动化操作
U2的初始化,会向移动端推送四个文件:
- UIAutomator-server:⾕歌原生的 uiautomator
- Atx-agent:uiautomator的守护进程,负责启动U2
- Minicap和Minitouch:是用NDK开发的工具,属于Android的底层开发,用于采集屏幕并输出图像形成视频,实现在PC端进行Android手机屏幕实时显示的目的(是atx-agent增加远程控制功能的依赖)
1.4 Adb的安装与应用
1.4.1 Adb简介
Adb即Android Debug Bridge,⼜称Android调试桥,是一个命令行工具,⽤于电脑端与模拟器或者是设备之间的交互
- Adb client :命令⾏程序‘adb’,通过shell或脚本运⾏adb命令
- Adb server:运⾏在PC上的⼀个后台程序
- Adbd :作为⼀个后台进程,在Android设备或模拟器系统中运⾏
其中, adb server作为adb client的服务端, 而adbd又作为adb server的服务端。
adb的作⽤:
- 安装卸载apk⽂件
- 移动设备和PC之间拷⻉⽂件
- 查看设备上安装的应⽤信息
- ⽂件管理
- 按键操作
1.4.2 Adb安装与应用
Adb的便捷安装方式:通过安装模拟器自带Adb安装实现,并将Adb.exe所在文件路径添加到path环境变量中
在设置–>关于手机–>版本号–>双击打开‘开发者选项’–>打开‘USB调试’
(1)查看链接的移动设备:adb devices
C:\Users\zhaoh>adb devices
List of devices attached
127.0.0.1:62025 device
(2)安装文件: adb install apk⽂件路径,安装路径不能有中文
C:\Users\zhaoh>adb install C:\Users\zhaoh\Desktop\106_2a65b5b89a76f0f1e28b51fe6461f077.apk
[100%] /data/local/tmp/106_2a65b5b89a76f0f1e28b51fe6461f077.apk
pkg: /data/local/tmp/106_2a65b5b89a76f0f1e28b51fe6461f077.apk
Success
在cmd下输入adb install ,然后将安装文件拖入至cmd即可得到完整的安装路径
(3)查看应⽤包名:adb shell pm list packages
C:\Users\zhaoh>adb shell pm list packages
..................
package:com.android.providers.downloads
package:com.android.browser
package:com.tal.kaoyan
...............
(4)卸载应⽤:adb uninstall 应⽤包名
C:\Users\zhaoh>adb uninstall com.tal.kaoyan
Success
(5)关闭链接的移动设备:adb kill-server
二、UIAutomator2
2.1 U2快速入门
(1)UIautomator安装
pip install --upgrade --pre uiautomator2
(2)启动模拟器,连接移动设备
adb devices
(3)初始化移动设备
python -m uiautomator2 init
初始化成功后,会同时在移动设备端上自动下载安装UIAutomator-server、 Atx-agent、 Minicap和Minitouch。其中Atx应用在移动端可见(初始化相当于驱动的安装,只需初始化一次即可)
(4)U2控制移动端设备
方式1:U2通过wifi(需要移动端IP)控制移动设备端—不推荐使用
设置–>WLAN–>高级–>IP地址:172.17.100.15
import uiautomator2 as u2
d = u2.connect_wifi('172.17.100.15')
如果连接失败,一般都是网络受限,PC和终端位于不同的局域网中
方式2:U2通过usb(需要移动端序列号)控制移动设备端------推荐用此方法
import uiautomator2 as u2
d = u2.connect_usb('127.0.0.1:62025')
print(d.info)
返回值:
C:\Python38\python.exe D:/pycharm/02-爬虫/U2的使用.py
{
'c