文章目录
爬虫 第八讲 移动端数据抓取
一、移动端环境搭建
(一)、移动端数据简介
1.移动端爬取数据的背景
随机互联网的发展,数据不仅仅只是存在于PC端。移动端的数据在这几年的占比以及势头发展趋势呈现几何倍数的增长。对于做数据分析、用户画像、市场调研来说仅仅参考PC端的数据是远远不够的。那么于此同时移动的数据就显得尤为的重要。
2.获取移动端数据的作用?
• 数据分析
• 用户画像
• 商业竞争
• 统计系统
3.UIAutomator的介绍
UIAutomator是google提供的用来做安卓自动化测试的一个java库
4.UIAutomator的缺陷
• 测试脚本只能用Java语言开发
• 测试脚本要打包成jar包或者apk包上传到设备上才能实现
5.UIAutomato2的优势
• UI自动化编写采用Python,学习成本低
• UI控件识别有专门的工具 weditor
• 环境搭建简单
• UI自动化脚本运行稳定
项目地址https://github.com/openatx/uiautomator2
6.UIAutomator2的执行流程
• 在PC端来编写脚本(相当于发送HTTP请求到移动设备的server端)
• 移动设备通过wifi或usb接收到了PC上发来的HTTP请求,执行定制的操作
• 在移动设备上安装atx-agent(守护进程),随后atx-agent启动ui2服务(默认7912端口)进行监听
(二)、adb的简介和u2的基本操作
1.adb的安装与使用
Adb又称Android调试桥,用于通过电脑端与模拟器或者是设备之间的交互的一个工具
Adb client 命令行程序‘adb’用于从shell或脚本中运行adb命令
Adb server adb server 是运行在PC的的一个后台程序
Adbd 程序adbd作为一个后台进程在Android设备或模拟器系统中运行
2.adb有什么作用?
• 安装卸载apk文件
• 移动设备和PC之间拷贝文件
• 查看设备上安装的应用信息
• 文件管理
• 按键操作
3.adb如何使用?
把adb的bin目录添加到环境变量当中
adb devices 查看链接的移动设备
adb kill-server 关闭链接的移动设备
adb install apk文件路径 安装app应用
adb shell pm list packages 查看应用包名
adb uninstall 应用包名 卸载应用
4.UIAutomator2快速入门
python -m uiautomator2 init 初始化移动设备
Uiautomator-server: 就是谷歌原生的 uiautomator
Atx-agent: uiautomator的守护进程
minicap和minitouch 中2个包是atx-agent增加远程控制功能的依赖
5.UIAutomator2控制移动设备
u2.connect_wifi('172.17.100.15') 通过wifi
u2.connect_usb('127.0.0.1:62025') 通过usb(手机序列号)
u2.connect_adb_wifi('172.17.100.15:5555') 通过adb wifi
6.UIAutomato2启动手机app
使用aapt工具进入这个路径输入
aapt dump badging apk的文件名
找到包名
d.app_start('包名')
停止
d.app_stop('包名')
7.UIAutomator2自动化工具基本操作
d.service('uiautomator').running() uiautomator运行状态
d.service('uiautomator').start() 启动uiautomator
d.service('uiautomator').stop() 停止uiautomator
d.app_install(data='apk地址') 安装app
d.app_current() 获取当前前台app的信息
d.app_stop('包名') 停止当前app
d.app_clear('包名') 清除缓存
d.app_uninstall('包名') 卸载app
d.app_list() 获取所有app的信息
d.app_stop_all() 停止所有app
d.app_uninstall_all() 卸载所有app
(三)、weditor的基本操作
1.什么是Activity?
Activity是Android系统中的四大组件之一,可以用于显示View。Activity是一个与用户交互的系统模块
An activity is a single, focused thing that the user can do. Almost all activities interact with the user, so the Activity class takes care of creating a window for you in which you can place your UI with setContentView(View).
2.Activity的控件
• TextView 显示文字
• EditText 输入框
• ImageView 显示图片
• Button 按钮
• CheckBox 复选框
• RadioButton 单选按钮
3.weditor的使用
安装
pip install weditor -i https://pypi.douban.com/simple
在命令行输入 weditor
4.weditor的界面包括
• 移动设备选择区
• 控件属性区域
• 代码展示区
• 层级关系和结果展示区域
(四)、UiSelector和控件定位
定位方式
1 UiSelector
代表的是一种搜索标准,可以在当前展示的页面中查询和获取特定的元素的句柄handle
2 Xpath
1.Andrid基本布局
- 线性布局 linearLayout 特点:有2种排列空间的方式 水平 垂直
- 相对布局 RelativelLayout 特点:以某个元素作为参照物
- 帧布局 FrameLayout 特点:View都会放到左上角
- 网格布局 TableLayout 特点:继承了线性布局,使用较少
- 绝对布局 AbsoluteLayout 特点:按坐标布局,缺点不同分辨率会有影响,几乎不用
2.控件的属性
index | int | 索引 | 0 |
---|---|---|---|
instance | int | 实例 | 5 |
class | Sting | 类名 | android.widget.TextView |
package | Sting | 包名 | com.tl.kaoyan |
check | boolean | 控件勾选状态 | false/true |
enable/clickable | boolean | 控件可点击 | false/true |
focused/focusable | boolean | 焦点 | false/true |
Scrollable | boolean | 滚动条 | false/true |
Long-clickable | boolean | 长按 | false/true |
selected | boolean | 选择状态 | false/true |
3.文本定位的方式
Text 全文本匹配
textContains 文本包含
textMatches 正则表达式
textStartsWith 起始文本
4.ClassName定位的方式
className classNmae的值
classNameMatches 正则表达式匹配 classNmae的值
5.资源id进行定位
resourcdId 资源id
6.混合定位的方式
文本定位 资源id ClassName等可以配合使用来进行定位
7.坐标点定位法
坐标点定位法分为2种方式 一种是通过原始的坐标点来呈现。一种是通过%号的方式来呈现
8.xpath定位的方式
d.xpath(‘xpath语句’)
二、fiddler抓包工具的使用
(一)、fiddler抓包工具
1.什么是fiddler?
Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯
官网 https://www.telerik.com/fiddler
fiddler功能很强大
• 支持IE、Chrome、FireFox等等浏览器
• 可以在phone、pad等移动设备进行连接
2.fiddler的安装
选择安装路径
点击Install
3.SwitchyOmega插件的安装
https://www.cnblogs.com/nicole-zhang/p/11955881.html
4.会话列表
(二)、fiddler 配置移动端数据包
1.夜神模拟器配置
2.fiddler 配置
(现在打开我们模拟器的浏览器)
提示有证书问题,我们来安装证书,点击继续
在这里输入我们的ip地址
(点击这个选项)
(如果设置密码的就已经可以了,如果没有设置密码会弹出选项让我们来设置密码)
弹出这个吐司证明安装成功了