• python爬虫23 | 手机,这次要让你上来自己动了。这就是 Appium+Python 的牛x之处


     

    你有没有想过让你的手机帮你自动完成某些事情

     

    比如自动帮你抢红包

     

    有些软件不是有签到活动么

     

    这些傻瓜式的操作

     

    能不能让手机自动签到呢?

     

    自动帮你叫外卖

    自动帮你打电话

    等等

     

     

    还有

     

    对于手机上的一些比较难以通过抓包获取的数据

     

    想不想像 selenium 那样轻松获取?

     

    之前小帅b就给大家介绍了 selenium

     

    python爬虫09 | 上来,自己动 !这就是 selenium 的牛逼之处

     

    可以模拟人类自动操作浏览器上的网页

     

    我们还使用它爬取了

     

    “鸡你太美”

     

    python爬虫11 | 这次,将带你爬取b站上的NBA形象大使蔡徐坤和他的球友们

     

    相信你已经体验到 selenium 的魅力了

     

    对于一些复杂的 PC 端的网页爬取

     

    它就是个利器

     

    不过

     

    对于手机上的一些稍微复杂点的 APP 数据

     

     selenium 就显得有点无能为力了

     

     

    那么

     

    有没有像 selenium 这样的框架

    可以模拟人类自动操作手机上的 APP 呢

     

     

    答案是肯定的

     

    那就是

     

    Appium

     

    如何让它来自动操作我们的手机呢

     

    那么

     

    接下来就是

     

    学习 python 的正确姿势

     

     

     

    为什么说 Appium 牛逼呢

     

    说 4 点足以

     

    1、他是开源的手机端自动测试框架

     

    2、selenium可以做的 Appium 都可以做,selenium不可以做的Appium 依然可以做,它能够支持 Android、iOS、windows 系统的原生 APP 进行自动操作

     

    3、它可以支持不同的语言写脚本,比如我们的 Python,还有Java、JavaScript 等

     

    4、以前你想要爬取 App 的数据的时,对于较难抓取的数据,你还需要对 App 进行反编译,很麻烦,但是 Appium 就不需要这么麻烦

     

     

    那 Appium 是怎么玩的呢

     

    你可以把 Appium 当做是一个服务器

     

    我们将我们写的控制操作 APP 的 python 代码

     

    扔给 Appium

     

    Appium 得到了请求,看到你跟它说要怎么去操作 APP

     

    它就乖乖的听你话去操作 APP 了

     

     

    我们在使用 Appium 之前

     

    我们需要安装相关的环境才可以使用

     

    由于 Android 开源又好用,又有虚拟机可以玩

     

    所以我们要的就是自动操作 Android 手机

     

    具体来说

     

    我们需要安装以下环境

     

    真香警告

     

    Appium 虽然比 selenium 对环境的要求相对复杂一丢,但是相信我,搞定之后你绝对会体验到 Appium 的魅力,接下来要说的内容相对干货,你需要拿出点时间,然后跟着 小帅b 一步一步装起来,如果你之前没接触相关的环境安装,可能在安装过程中你会说几次脏话,没关系,"挖槽","TMD" 完之后,都给我安装好以下内容。

     

     

     

     

    1、node.js 和 npm

     Appium需要

     

    2、JDK

    java 环境,Android需要这个环境

     

    3、Android SDK

     Android强大的开发工具包

     

    4、Android虚拟机

    可选,如果你用你的真鸡也可以的,用 usb 插入电脑就行

     

    5、Appium

    我们的主角

     

    6、Appium-Python-Client

    python客户端,用来连接 Appium

     

    7、Python

    python相信你早已经安装了,还没有安装的是猪吧?

     

     

    那么接下来

     

    小帅b教你一步一步地安装起来

     

    不同的操作系统安装方式可能有些许不同

     

    但都差不多也就那会事

     

    1、安装node和npm

     

    你可以到以下链接去下载 node 安装包

     https://nodejs.org/zh-cn/download/ 

     

    然后一顿安装

     

    windows安装的时候记得勾选 Add to path (添加到环境变量) 

     

    如果你和小帅b一样用 ubuntu 这种类 Unix 系统的话输个命令就行

     

    sudo apt-get updatesudo apt-get install nodejs

     

    然后你输入命令 node -v 

    如果显示版本号就说明你成功安装 node 了

     

    xiaoshuaib@xiaoshuaib:~$ node -vv10.15.3


    安装 node 过程中同时也安装了 npm 了

     

    输入 npm -v 有显示版本好的话说明你安装好了 npm

     

    xiaoshuaib@xiaoshuaib:~$ npm -v6.4.1

     

     

    2、安装JDK

     

    你可以到以下链接去下载 jdk

     

    https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

     

    根据你的系统自行选择相应的 jdk

     

     

    安装完成之后记得配置好 Java 环境变量

     

    如何配置 jdk 环境变量就不在这里说了

     

    因为不同的系统配置方式不同

     

    你可以自行 Google

     

     

    在你的终端输入 javac ,如果你得到如下的东西说明你成功安装好 jdk 和 配置好环境了

     

    xiaoshuaib@xiaoshuaib:~$ javacUsage: javac <options> <source files>where possible options include:  -g                         Generate all debugging info  -g:none                    Generate no debugging info  -g:{lines,vars,source}     Generate only some debugging info  -nowarn                    Generate no warnings  -verbose                   Output messages about what the compiler is doing  -deprecation               Output source locations where deprecated APIs are used  -classpath <path>          Specify where to find user class files and annotation processors  -cp <path>                 Specify where to find user class files and annotation processors  -sourcepath <path>         Specify where to find input source files  -bootclasspath <path>      Override location of bootstrap class files  -extdirs <dirs>            Override location of installed extensions  -endorseddirs <dirs>       Override location of endorsed standards path  -proc:{none,only}          Control whether annotation processing and/or compilation is done....

     

     

    3、安装Android SDK

     

    有些小伙伴可能之前没开发过 Android

     

    不过没关系

     

     Android SDK 是 Android 开发的工具包

     

    下载方式和 JDK 类似

     

    可以到以下链接去下载 sdk

     

    https://developer.android.com/studio#downloads

     

     

    如果你打不开这个链接的话

     

    可以用镜像链接

     

    http://www.android-studio.org/index.php/download/hisversion

     

    下载完之后就一顿解压

     

    解压完之后打开 sdkmanager

     

    windows的话有界面

     

    直接选择一个 Android 版本

     

    然后你点击 install package 就可以了

     

    或者你也可以像 Linux 一样

     

    解压完之后

     

    进入目录中的 /tools/bin

     

    输入以下命令安装最新的工具

     

    xiaoshuaib@xiaoshuaib:~/android/tools/bin$ ./sdkmanager "platform-tools" "platforms;android-28"

     

    接着配置一下环境变量

     

    ubuntu 的话可以这样配

     

    打开 profile

     

     sudo vim /etc/profile

     

    添加你安装的sdk的目录

     

    export ANDROID_HOME=/home/xiaoshuaib/androidexport PATH=$PATH:${ANDROID_HOME}/toolsexport PATH=$PATH:${ANDROID_HOME}/platform-tools

     

    然后设置生效后重启一下

     

    source /etc/profile

     

     

    windows配置环境变量的话

     

    也是这个道理

     

    在你的电脑--属性--高级--环境变量

     

    新建一个变量 ANDROID_HOME

     

    值就是你刚刚解压下来的 Android 目录

     

    然后在你的 path 中添加

     

    ${ANDROID_HOME}/tools;${ANDROID_HOME}/platform-tools

     

    接着

     

    在命令行输入 adb shell

     

    如果你出现和小帅b以下这样的就说明你配置对了

     

    xiaoshuaib@xiaoshuaib:~$ adb shell* daemon not running; starting now at tcp:5037* daemon started successfully

     

    4、安装 android 虚拟机

     

    其实你有真鸡的话不用安装也可以

     

    安装虚拟机你可以到以下链接下载

     

    https://www.genymotion.com/download

     

    想当年小帅b在玩 Android 开发的时候就经常用 genymotion

     

    速度相对来说快了不少

     

     

    打开虚拟鸡或者用你的真鸡连接电脑(记得打开usb调试)

     

    然后输入 adb devices

     

    如果你像小帅b一样列出你现在的 Android 手机

     

    xiaoshuaib@xiaoshuaib:~$ adb devicesList of devices attached88CKBM622PAM  device

     

    那么就说明是正确的啦

     

     

    5、安装 Appium

     

    第一种安装方式

     

    使用命令行用 npm 安装 Appium

     

    npm install -g appium

     

    ubuntu需要权限的话可以使用如下命令

     

    sudo npm install -g appium --unsafe-perm=true --allow-root

     

    第二种安装方式

     

    你也可以到以下链接直接下载安装包

     

    https://github.com/appium/appium-desktop/releases

     

     

    安装完之后输入命令 appium

    如果你和小帅b这样的就说明成功安装 Appium了

     

    xiaoshuaib@xiaoshuaib:~$ appium[Appium] Welcome to Appium v1.12.1[Appium] Appium REST http interface listener started on 0.0.0.0:4723

     

    6、Appium-Python-Client

     

    pip install Appium-Python-Client

     

    OK

     

    那么到现在我们就把该装的装完了

     

    酸爽~

     

     

    我们可以来安装以下 appium-doctor 来检测一下我们安装的环境是否都可以了

     

    npm install -g appium-doctor

     

    安装完之后输入 appium-doctor

     

    如果你也出现这样的

     

     

    congratulation

     

    你已经搞定所需环境啦

     

     

    事不宜迟

     

    赶紧整个小例子试试水先

     

    我们就让它自动打开手机的微信 APP 吧

     

    确保手机连接到电脑

     

    xiaoshuaib@xiaoshuaib:~$ adb devicesList of devices attached88CKBM622PAM  device

     

    开启 Appium

     

    xiaoshuaib@xiaoshuaib:~$ appium[Appium] Welcome to Appium v1.12.1[Appium] Appium REST http interface listener started on 0.0.0.0:4723

     

    写个python

     

    # coding=utf-8
    from appium import webdriver
    desired_caps = { 'platformName''Android', 'deviceName''88CKBM622PAM', 'platformVersion''5.1', 'appPackage''com.tencent.mm',  'appActivity''com.tencent.mm.ui.LauncherUI' }
    driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)

     

    运行python之后

     

    Appium 开始执行

     

     

    看看你的手机

     

     

    自动打开了!

     

    cool~

     

    ok

     

    本篇主要让你知道怎么安装这些所需要的环境

     

    可能你现在有点疑问

     

    怎么知道微信的包名的

    怎么知道微信的启动页面的

    python代码如何写自动操作的

     

    别急

     

    你先把环境安装好

     

    下一篇

     

    小帅b将带你使用 Appium 来爬取 APP 上的数据

     

    期待就好了

     

    帅b老仙

    法力无边

     



     

     

    右下角点一下

    给小帅b发点功

  • 相关阅读:
    haproxy配置ca证书
    gnu make
    工程引用libm.a文件的sin函数后
    bin utilities related
    ELF文件之九——使用链接脚本-2个函数-data-bss-temp-call-debug信息-struct
    ELF文件之八——使用链接脚本-2个函数-data-bss-temp-call-debug信息
    ELF文件之七——使用链接脚本-2个函数-data-bss-temp-call
    网站访问日志User Agent对照表
    jeecms上传文件限制导致413-Request Entity Too Large
    URL参数带加号“+”AJAX传值失败的解决方法
  • 原文地址:https://www.cnblogs.com/fxxkpython/p/10832380.html
Copyright © 2020-2023  润新知