移动端爬虫

  • 移动端爬虫
    • 移动端前导知识
      • 移动端背景
      • 移动端数据的作用
    • Uiautomator介绍
      • Android四大组件
        • activity和控件的操作
          • activity的控件
    • Uiautomator2(主要学习内容)
      • U2的执行流程
        • adb简介
        • adb的安装
        • adb的使用
      • python与U2交互的快速入门
        • 初始化ATX(驱动,实现控制其他APP)
        • 连接U2并获取相关信息
        • 启动、停止和获取APP信息
        • 安装和卸载APP
        • 息屏和亮屏的操作
        • 按住移动的操作
        • weditor的使用
          • weditor定位控件(可以同时使用多种方法定位一个位置)
            • 文本定位和操作
            • classname定位和操作
            • 通过资源Id定位和操作
            • 链式定位和坐标定位
    • Fiddler
      • 安装
      • 配置Fiddler
      • 配置手机代理
      • 通过Fiddler抓包

移动端爬虫

移动端前导知识

移动端背景

  • PC端 --> 移动端 --> 大数据 --> AI --> ???

移动端数据的作用

  1. 数据分析
  2. 用户画像 —— 参考价值高(精准投放)
  3. 商业竞争

Uiautomator介绍

  • 简介 —— google提供用来做Android自动化测试的一个Java库
  • 作用 —— 测试用户界面(称为view),基于Accessibility service(Android辅助功能)

Android四大组件

  • activity —— 单独的屏幕(窗口)
  • service —— 用于后台完成指定操作
  • 内容提供者
  • 广播

activity和控件的操作

  • activity作用 —— 可以显示View(窗口)
activity的控件
  • TextView —— 文字显示框
  • EditText —— 输入旷工
  • ImageView —— 图片显示框
  • Button —— 按钮
  • CheckBox —— 复选框
  • RadioButton —— 单选按钮

Uiautomator2(主要学习内容)

  • 对比Uiautomator优势:

    1. 编写逻辑用python语言
    2. Uiautomator控件识别工具weditor
    3. 使用简单
  • 安装:
    • pip install uiautomator2

U2的执行流程

  • 移动设备安装atx-agent(守护进程),atx-agent启动u2服务(默认7912端口)
  • pc端编写脚本(发送http请求到移动设备的server端)
  • 移动设备通过WiFi或USB接收到pc发来的http请求,执行指定的操作

adb简介

  • 简介 —— Android调试桥,通过电脑端和移动设备进行交互的一个工具

    • adb client —— adb命令窗口
    • adb server —— 后台程序
    • adbd —— Android设备的后台进程
  • 功能
    • 安装卸载apk文件
    • 移动设备和pc端之间的文件传输
    • 查看设备上的应用信息

adb的安装

  • pc端安装模拟器后自动安装adb

    • 安装夜神模拟器
    • 打开夜神多开器,添加设备(5.1.1版本)
    • 打开夜神多开器设置
      • 启动设置 —— 改为手机版
      • 显卡渲染模式 —— 如果兼容模式黑屏则选择极速模式
    • 运行模拟器
    • 打开开发者选项 —— 设置–>关于平板电脑–>多次点击版本号
    • 打开USB调试 —— 设置–>开发者选项

adb的使用

  • 安装文件:
    adb install apk文件路径
  • 查看所有已安装的包(包名):
    adb shell pm list packages
  • 查看指定软件的包名称(aapt):
    aapt dump badging APK路径及文件名
  • 卸载文件:
    adb uninstall 软件包名

python与U2交互的快速入门

初始化ATX(驱动,实现控制其他APP)

python -m uiautomator2 init

连接U2并获取相关信息

  • 通过WiFi连接
    import uiautomator2 as u2
    变量 = u2.connect_wifi(IP地址) —— 所有未指定名称的变量均使用此变量
    print(变量.info) —— 查看连接信息
    print(变量.device_info) —— 查看更详细信息
  • 通过USB连接
    import uiautomator2 as u2
    变量 = u2.connect_usb(设备名) —— adb devices获取
    print(变量.info) —— 查看连接信息
    print(变量.device_info) —— 查看更详细信息
  • 查看U2连接状态
    变量.service(name).running() —— name参数为名称(可任意起名称)。返回值是布尔类型,true为服务运行状态,false为服务未运行状态
  • U2服务的启动
    变量.service(name).start()
  • U2服务的停止
    变量.service(name).stop()
  • 获取屏幕的分辨率
    变量.window_size()
  • 获取设备ip(模拟器获取ip有错误,真机无错误)
    变量.wlan_ip()

启动、停止和获取APP信息

  • 启动方法:
    变量.app_start(软件包名)
  • 停止方法:
    变量.app_stop(软件包名)
  • 获取当前前台运行中的APP信息
    变量.app_current()
  • 获取软件详细信息
    变量.app_info(软件包名)

安装和卸载APP

  • 安装APP方法:
    变量.app_install(data) —— data参数可以是apk文件路径,URL地址或文件对象
  • 卸载APP方法:
    变量.app_uninstall(软件包名) —— 卸载单一软件
    变量.app_uninstall_all() —— 卸载所有第三方软件
  • 清楚APP缓存
    变量.app_clear(软件包名)

息屏和亮屏的操作

  • 息屏

    • 变量.screen_off()
  • 亮屏
    • 变量.screen_on()

按住移动的操作

  • 变量.swipe_points(points=[(坐标1),(坐标2),…])

weditor的使用

  • 启动weditor —— 确定设备已连接后(adb devices),命令提示符窗口输入weditor后回车
  • 界面的区域功能
    • 移动设备选取区域
    • 控件属性区域
    • 代码展示区域
    • 层级关系及结构展示区域
weditor定位控件(可以同时使用多种方法定位一个位置)
  • 方法一:UiSelector

    • 一种搜索标准 —— 可以在当前展示界面上查询和获取特定元素的句柄
    • android基本布局
      1. 线性布局 —— LinearLayout(默认水平排列,也可垂直排列)
      2. 相对布局 —— RelativeLayout(以某一个控件作为参照物,其余控件以这个控件的位置来完成布局)
      3. 帧布局 —— FrameLayout(所有控件都会放到左上角)
      4. 表格布局 —— TableLayout(继承于线性布局)
      5. 绝对布局 —— AbsoluteLayout(基本不用,手机屏幕适配问题多)
    • 控件的属性:
文本定位和操作
  • 全文本定位 —— Text

    • 变量(text=‘全文本内容’).click()
  • 文本包含定位 —— textContains

    • 变量(textContains=‘关键且唯一的内容’).click()
  • 正则表达式定位 —— textMatches

    • 变量(textMatches=‘正则表达式内容’).click()
  • 起始文本定位 —— textStartsWith

    • 变量(textStartWith=‘必须文本的第一个字符开始且唯一的内容’).click()
classname定位和操作
  • classname定位 —— className

    • 变量(className=‘classname的值’)[index].click()

      • classname的值如果无效,在weditor页面的Hierarchy中进行搜索,如果出现多个值则需要添加index(注意层级关系)
      • index参数为可选参数,从0开始
  • classname正则表达式定位 —— classNameMatches

    • 变量(classNameMatches=‘正则表达式内容’).click()
通过资源Id定位和操作
  • resourceid定位 —— resourceId

    1. 变量(resourceId=‘resourceid的值’)[index].click()
    2. 变量(resourceId=‘resourceid的值’,instance=9).click()
      • instance是属性的实例,在weditro页面的Hierarchy中进行搜索,如果出现多个值可以根据instance数量填写
  • resourceid正则表达式定位 —— resourceIdMatches

    • 变量(resourceIdMatches=‘正则表达式内容’).click()
链式定位和坐标定位
  • 链式定位 —— 根据层级进行一层一层的查找

    • 父子层级查找
    1. 变量(className=‘父层级的classname值’).child(其他定位方法).click()
    2. 变量(className=‘父层级的classname值’).child_by_text(‘全文本内容’).click()
    3. 变量(className=‘父层级的classname值’).child_by_instance(实例的值).click()
    • 兄弟层级查找

      • 变量(className=‘父层级的classname值’).sibling(其他定位方法).click()
  • 坐标定位 —— 坐标在weditor页面中的坐标参数(百分比和像素两种)

    • 变量.click(坐标值) —— 百分比和像素均可以

Fiddler

安装

  • 官网:https://www.telerik.com/fiddler

配置Fiddler

  1. 点击设置 -> HTTPS -> trust root certificate
  2. 点击设置 -> Connections -> Fiddler listens on port -> 输入端口号
  3. 点击设置 -> Connections -> 选择Allow remote computers to connect
  4. 保存

配置手机代理

  1. 点击设置 -> WLAN -> 选择无线网络并连接(需与安装有fiddler电脑统一网络)
  2. 点击设置 -> WLAN -> 长按当前连接的网络 -> 点击修改网络
  3. 点击代理(如没有此选项,点高级选项)-> 选择手动 -> 服务器主机名填写安装有fiddler电脑的ip -> 服务器端口填写配置Fiddler中第二点的端口号 -> 点击保存

通过Fiddler抓包

  1. 打开Fiddler
  2. 界面中找到Response窗口
  3. 点击Raw或Body —— 可看到数据(Body里有3个选项Text、JSON、XML,根据需要选择即可)

python 移动端爬虫相关推荐

  1. python移动端爬虫_移动端爬虫工具与方法介绍

    本文来自网易云社区 作者:王涛 本文主要介绍了移动端爬虫的工具与方法,作为一个入门的大纲.没有详细介绍的也给出了本人学习过程中借鉴的资料的链接,适合对移动端爬虫感兴趣的同学入门. 一.抓包模拟 基本原 ...

  2. python移动端_移动端Python爬虫实战-2020版

    第1章 2020版 第一章 移动端Python爬虫进阶实战课程导学 介绍课程目标.通过课程能学习到的内容.学会这些技能能做什么,对公司业务有哪些帮助,对个人有哪些帮助.介绍目前app数据抓取有哪些困难 ...

  3. Python即时网络爬虫项目: 内容提取器的定义(Python2.7版本)

    1. 项目背景 在Python即时网络爬虫项目启动说明中我们讨论一个数字:程序员浪费在调测内容提取规则上的时间太多了(见上图),从而我们发起了这个项目,把程序员从繁琐的调测规则中解放出来,投入到更高端 ...

  4. 爬虫技术python流程图_基于Python的网络爬虫技术研究

    基于 Python 的网络爬虫技术研究 王碧瑶 [摘 要] 摘要:专用型的网络爬虫能够得到想要的返回结果 , 本文就以拉勾网作 为例子 , 对基于 Python 的网络爬虫技术进行研究和分析. [期刊 ...

  5. 移动端 爬虫工具 与 方法 介绍

    From:https://www.cnblogs.com/zyfd/p/9681080.html 本文主要介绍了移动端爬虫的工具与方法,作为一个入门的大纲.没有详细介绍的也给出了本人学习过程中借鉴的资 ...

  6. python docker自动化_「docker实战篇」python的docker爬虫技术-移动自动化控制工具appium工具(17)...

    原创文章,欢迎转载.转载请注明:转载自 IT人故事会,谢谢! 原文链接地址: 「docker实战篇」python的docker爬虫技术-移动自动化控制工具appium工具(17) Appium是一个开 ...

  7. python docker自动化_「docker实战篇」python的docker爬虫技术-移动自动化控制工具安卓ADB的使用(15)...

    原创文章,欢迎转载.转载请注明:转载自 IT人故事会,谢谢! 原文链接地址: 「docker实战篇」python的docker爬虫技术-移动自动化控制工具安卓ADB的使用(15) adb(Androi ...

  8. python为什么叫爬虫-Python为什么叫爬虫

    很多刚接触python的同学都有一个疑问,那就是python爬虫是什么?为什么把python叫做爬虫?今天小编就来给大家解释一下,Python为什么叫爬虫. python爬虫是什么? 在解释Pytho ...

  9. 「docker实战篇」python的docker爬虫技术-在linux下mitmproxy介绍和安装(四)

    原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:「docker实战篇」python的docker爬虫技术-在linux下mitmproxy介绍和安装(四) 上次说了fiddl ...

最新文章

  1. STM32F030控制蜂鸣器
  2. 日期和时间 - Java处理日期和时间
  3. 苹果新款iPad或将于下月在新总部发布
  4. ASP.NET AJAX中防止用户多次提交页面
  5. leetcode—22.二分查找题目leetcode总结
  6. 【JSP内置对象】之9大内置对象(JavaWeb必背必掌握)
  7. 基于JavaSwing开发医院信息管理系统 毕业设计 课程设计 大作业
  8. 下洗风场分析与喷雾模拟
  9. 手机普通浏览器唤起微信打开网页url
  10. RSA no_padding加密(modulus、exponent构造公钥)
  11. Relation Network for Person Re-identification阅读总结
  12. html中数字效果,使用css实现电子数字效果
  13. 编译alsa相关库,在android4.1下应用。
  14. 讲真话、求真知、做真我——Facebook COO桑德伯格2012哈佛商学院毕业演讲
  15. 使用MyBatis时出现java.io.IOException: Could not find resource com/ee/mybatis/mapper/Usermapper.xml 类似的错误
  16. mysql科学计数法问题
  17. 国家大地2000坐标 4547范围 坐标值相关
  18. 华科计算机组成原理 头歌Educoder Logisim 计算机数据表示实验(HUST) 1~9关满分通关
  19. 【中级软考—软件设计师】2操作系统2.10 作业管理【*】:2.10.1 作业管理
  20. java piwik_Piwik学习 -- 插件开发

热门文章

  1. 个推成立西湖数据智能研究院,打造中国数据智能研究领域领头雁
  2. linux分区_解决Linux下挂载的NTFS分区(Windows分区)只读问题。
  3. oracle return rowid,Oracle rowid 详解
  4. linux shutdown 定时关机,Linux系统Shutdown命令定时关机详解
  5. linux查看刷卡pos机_LINUX饭堂收费机/会员LINUX刷卡机/LINUX手持收费机
  6. pdf在线转换word
  7. mybatis一对多关联查询将结果封装到嵌套list
  8. 美团、饿了么这些平台先收消费者的钱,然后再转账给商户,在财务上是怎么处理的?
  9. 人体检测用于空洞和裂痕检测
  10. 无线降噪耳机怎么选?佩戴舒适的降噪耳机推荐