JAVA+appium+夜神模拟器实现APP爬虫

爬虫需要

appium server: 一个APP自动化测试框架 C/S架构 服务端由node.js开发 客户端支持多种语言,底层使用netty通信。

java写的自动化爬取程序:使用java_client包( appium客户端的java支持包) maven下载最新的即可

测试机器:夜神模拟器 或者真机都行,模拟器更稳定

具体操作原理

比如要操作手机对某个app实现点击按钮
1.adb连接上设备

2.appium客户端,这里使用Java来发起网络请求
报文实例:Creating session with W3C capabilities: {
[BaseDriver] “alwaysMatch”: {
[BaseDriver] “platformName”: “android”,
[BaseDriver] “appium:appActivity”: “********”,
[BaseDriver] “appium:appPackage”: “*******”,
[BaseDriver] “appium:automationName”: “UiAutomator2”,
[BaseDriver] “appium:deviceName”: “127.0.0.1:62001”,
[BaseDriver] “appium:fullReset”: false,
[BaseDriver] “appium:noReset”: true,
[BaseDriver] “appium:platformVersion”: “7”
[BaseDriver] },
[BaseDriver] “firstMatch”: [
[BaseDriver] {}
[BaseDriver] ]
[BaseDriver] }
[BaseDriver] Session created with session id: 9ff230ac-e1bc-4494-bee8-9187e8025cc6
此报文表示客户端请求appium服务端和设备建立一个会话,通过会话可以向设备发送命令

3.appiumServer接受请求 处理转发到设备

数据流转流程
java程序(appiumClient) —》 appiumServer —》 设备的UIAutomator2(谷歌sdk自带的测试框架 执行一系列操作)

UIAutomator源码地址(需要翻墙,一些操作需要看源码 比如滚动查找元素)
UIAutomator Api文档(需要翻墙)

具体实现流程

1.安装android sdk并设置环境变量 我选择安装在D:/Android下面**

安卓sdk mananger下载地址

2.安装AndoridBuildTools 得到adb方便后续查看设备情况

打开D:\Android\SDK Manager.exe
安装前3个包即可(使用模拟器和真机不需要sdk 太大)

环境变量配置:ANDROID_HOME:D:\Android
%ANDROID_HOME%\tools
%ANDROID_HOME%\platform-tools
具体如何配置不懂的请百度

3.appium安装 并启动

访问 appium官网 选择Appium-windows-1.21.0.exe下载安装即可

4.建议替换夜神的adb 或者直接用夜神的nox_adb也行

替换方法 删除夜神目录下的D:\Program Files\Nox\bin\nox_adb.exe
先D:\Android\platform-tools下的3个文件复制到任一目录下,将其中adb.exe改名为nox_adb.exe 再复制到夜神bin目录下

5.启动夜神模拟器 cmd窗口下输入adb devices -l

显示如下:

List of devices attached
127.0.0.1:62001 device product:R11 Plus model:OPPO_R11_Plus device:R11 Plus transport_id:1

设备名:127.0.0.1:62001或者R11 Plus 建议使用前者

6.编写代码

import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.remote.DesiredCapabilities;import java.net.MalformedURLException;
import java.net.URL;public class Test {public static void main(String[] args) {AndroidDriver driver = initDriver();driver.get("具体的详情页url");System.out.println(driver.getPageSource());// 具体定位元素使用请百度WebElement element =driver.findElementById("........")System.out.println(element.getText());}public static AndroidDriver initDriver() {DesiredCapabilities desiredCapabilities = new DesiredCapabilities();desiredCapabilities.setCapability("platformName", "Android");// 需要控制的app包名和mainActivity路径 获取方法:百度:adb命令获取app包名desiredCapabilities.setCapability("appPackage", "。。。。。。");desiredCapabilities.setCapability("appActivity", "。。。。。。");// adb连接的设备地址desiredCapabilities.setCapability("deviceName", "127.0.0.1:62001");desiredCapabilities.setCapability("platformVersion", "7");// 开启Session时不重置登录状态desiredCapabilities.setCapability("noReset", true);desiredCapabilities.setCapability("fullReset", false);// 控制模式 默认UiAutomator2desiredCapabilities.setCapability("automationName", "UiAutomator2");try {return new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), desiredCapabilities);} catch (MalformedURLException e) {e.printStackTrace();}return null;}
}

maven依赖:

<dependency>
<groupId>io.appium</groupId>
<artifactId>java-client</artifactId>
<version>7.5.1</version>
</dependency>

7.总结

app爬虫
优点:反爬机制少,稳定
缺点:速度慢 定位元素困难

一些知识点

  • 滑动查找元素的办法 scrollIntoView
    其中会先scrollToBeginning 上移到app页面顶部 会触发一些app下拉操作 影响抓取数据
    临时办法:手动scrollForward() 再获取元素
    源码:
public boolean scrollIntoView(UiSelector selector) {// if we happen to be on top of the text we want then return hereif (exists(getSelector().childSelector(selector))) {return (true);} else {// we will need to reset the search from the beginning to start searchscrollToBeginning(mMaxSearchSwipes);if (exists(getSelector().childSelector(selector))) {return (true);}for (int x = 0; x < mMaxSearchSwipes; x++) {if(!scrollForward()) {return false;}if(exists(getSelector().childSelector(selector))) {return true;}}}return false;}
  • driver.getPageSource() 只能获取当前页面的数据 已加载或未加载的数据都没有
  • platformVersion设置没啥意义
  • 多开需要启动多个不同端口的appium server端 创建andoroid driver驱动的时候使用不同的端口即可

JAVA+appium+夜神模拟器实现APP爬虫相关推荐

  1. (二)01- DCloud平台 HTML5+ App开发——真机调试运行 夜神模拟器运行HBuilderX中的html文件 夜神模拟器运行App的基础功能示例-手机设备-分享功能-拍照功能

    DCloud 平台 HTML5 + App 开发 下载安装 HBuilderX 下载地址:https://www.dcloud.io/hbuilderx.html HBuilderX-使用步骤: 第一 ...

  2. appium+夜神模拟器操作微信小程序,多个模拟器要结合yaml配置文件来并发控制,一万多行代码[建议收藏]

    技术心得 python+appium+夜神模拟器+结合yaml配置文件实现并发采集任务. 代码如下: import subprocess from os import system from appi ...

  3. windows下app爬虫环境搭建:python + fiddler + Appium + 夜神模拟器

    python.夜神模拟器自行下载安装 1.安装java https://www.oracle.com/java/technologies/downloads/#jdk19-windows 注意安装ja ...

  4. Python+Appium+夜神模拟器 全流程从环境搭建到实现自动化(APP自动化)

    ** 文末有小礼物! ** 希望此次分享能够帮助小伙伴们,按照当前文章可自主搭建APP自动化测试环境和实现计算机控制模拟器APP执行操作! 环境依赖(jdk.sdk) 安装jdk(地址):jdk下载地 ...

  5. python--安卓APP自动化测试环境搭建(Appium+夜神模拟器)

    0.前言 看了很多自动化测试入门的课程,还是B站白月黑羽讲的最详细 从环境搭建到常用功能,讲的都比较详细 由于没什么项目实践,就简单写了一个什么值得买APP自动签到脚本 后期打算买个树莓派,把整个环境 ...

  6. appium的安装+连接夜神模拟器控制app

    一.下载夜神模拟器 官网:https://www.yeshen.com 1.安步骤安装即可 2.配置 把android sdk的C:\Users\Administrator\AppData\Local ...

  7. Appium+夜神模拟器模拟人为操作

    一.准备环境 appium请参考博客appium+python的环境安装 夜神模拟器 直接从夜神模拟器官网下载夜神模拟器进行安装,安装后添加path环境变量:D:\Program Files\Nox\ ...

  8. appium+夜神模拟器

    1.安装Android sdk,配置环境变量 (1)创建ANDROID_HOME (2)SDK的platform-tools和tool的路径添加到Path 变量内(这两个目录在你通过SDK Manag ...

  9. appium + 夜神模拟器安装经验

    一.需要安装的软件 1.夜神模拟器 2.jdk1.6.0 (64位) 3.Android studio 4.Node.js 5.appium 6.Appium-Python-Client 注意:按顺序 ...

最新文章

  1. java jdk 环境变量配置(window 10 系统)
  2. Linux的Unicon资料
  3. 配置IIS Silverlight运行环境
  4. .NET Framework 各版本区别
  5. 从ICCV 2021看夜间场景自监督深度估计最新进展
  6. FFmpeg转OpenCV Mat显示
  7. LeetCode 1311. 获取你好友已观看的视频(BFS+哈希map+vector排序)
  8. Xen虚拟机两大迁移方法详解
  9. cygwin安装教程图解
  10. 纯HTML个人简历模板代码
  11. 本地文件秒搜工具 Everything
  12. R可视化绘图二-ggplot2
  13. 计算机软件如何永久删除,【电脑软件教程篇】如何永久彻底清除电脑使用痕迹...
  14. HTTP协议原理详解
  15. 作业 5:词频统计——增强功能
  16. 宇宙人工智能计算机程序,人工智能令整个宇宙变成一个玄计算机,宇宙是虚拟的...
  17. 用VB.NET(Visual Basic 2010)封装EXCEL VBA为DLL_COM组件(一)
  18. 如何更换安装鸿蒙系统,华为鸿蒙系统2.0如何进行安装?鸿蒙系统2.0安装方法详细介绍...
  19. 项目经理/小组长的职责
  20. minecraft1.16java_我的世界:1.16最神奇的种子,自然生成的石头雕像,基岩能用!...

热门文章

  1. 详细讲解MOSFET管驱动电路(转)
  2. MOSFET管应用总结
  3. 深入理解计算机大端与小端
  4. 查询mysql索引信息_数据查询优化之mysql索引
  5. 一路生花 - 温奕心
  6. 使用HBuilder插件市场感悟
  7. 天气太冷不想出被窝?来DIY一个离线语音控制器
  8. android蓝牙门禁,1号社区APP互联门禁产品新开门方式说明
  9. 霍涛发现数据科学专业门槛最高,霍涛完善数据实践
  10. 差速小车的Cartographer建图