python爬虫23 | 手机,这次要让你上来自己动了。这就是 Appium+Python 的牛x之处
你有没有想过让你的手机帮你自动完成某些事情
比如自动帮你抢红包
有些软件不是有签到活动么
这些傻瓜式的操作
能不能让手机自动签到呢?
自动帮你叫外卖
自动帮你打电话
等等

还有
对于手机上的一些比较难以通过抓包获取的数据
想不想像 selenium 那样轻松获取?
之前小帅b就给大家介绍了 selenium
python爬虫09 | 上来,自己动 !这就是 selenium 的牛逼之处
可以模拟人类自动操作浏览器上的网页
我们还使用它爬取了
“鸡你太美”
python爬虫11 | 这次,将带你爬取b站上的NBA形象大使蔡徐坤和他的球友们
相信你已经体验到 selenium 的魅力了
对于一些复杂的 PC 端的网页爬取
它就是个利器
不过
对于手机上的一些稍微复杂点的 APP 数据
selenium 就显得有点无能为力了

那么
有没有像 selenium 这样的框架
可以模拟人类自动操作手机上的 APP 呢
答案是肯定的
那就是
Appium
如何让它来自动操作我们的手机呢
那么
接下来就是

为什么说 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-8from appium import webdriverdesired_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发点功
python爬虫23 | 手机,这次要让你上来自己动了。这就是 Appium+Python 的牛x之处的更多相关文章
- python爬虫24 | 搞事情了,用 Appium 爬取你的微信朋友圈。
昨天小帅b看到一些事情不顺眼 有人偷换概念 忍不住就写了一篇反讽 996 的 看不下去了,我支持996,年轻人就该996! 没想到有些人看不懂 这就算了 还来骂我 早些时候关注我的小伙伴应该知道我第一 ...
- 小白学 Python 爬虫(23):解析库 pyquery 入门
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 小白学 Python 爬虫(29):Selenium 获取某大型电商网站商品信息
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- Python爬虫与数据分析之模块:内置模块、开源模块、自定义模块
专栏目录: Python爬虫与数据分析之python教学视频.python源码分享,python Python爬虫与数据分析之基础教程:Python的语法.字典.元组.列表 Python爬虫与数据分析 ...
- 小白学 Python 爬虫(17):Requests 基础使用
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 小白学 Python 爬虫(25):爬取股票信息
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- Python 爬虫十六式 - 第五式:BeautifulSoup-美味的汤
BeautifulSoup 美味的汤 学习一时爽,一直学习一直爽! Hello,大家好,我是Connor,一个从无到有的技术小白.上一次我们说到了 Xpath 的使用方法.Xpath 我觉得还是 ...
- 小白学 Python 爬虫(26):为啥上海二手房你都买不起
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
- 小白学 Python 爬虫(30):代理基础
人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...
随机推荐
- 英式英语 vs 美式英语
0. 常见不同 日期的表达: 美国:月日年: 英国:日月年: 1. 发音 schedule,美 ['skɛdʒul],英 [ˈʃɛdjuːl] pecan,山核桃,英 ['piːk(ə)n;],美 [ ...
- SYSUCPC2017 DAG最多能添加多少边?
校赛的一道题目 难度不大 不过还是挺有趣的 题意:给定一个有向图,问此图是不是一个DAG且不包含重边 如果是的话 回答最多可以添加多少条边且图仍然是个DAG 考虑对于任意一个点u 添加一条边(u,v) ...
- 洛谷 P3960 [ NOIP 2017 ] 列队 —— 线段树
题目:https://www.luogu.org/problemnew/show/P3960 NOIP 题,不用很复杂的数据结构...但又参考了许多: 要求支持维护删除第 k 个和在末尾插入的数据结构 ...
- bzoj2115 [Wc2011] Xor——高斯消元 & 异或线性基
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2115 异或两次同一段路径的权值,就相当于没有走这段路径: 由此可以得到启发,对于不同的走法, ...
- Eclipse使用Tomcat发布项目时出现YadisException异常解决方案
调整使用Eclipse的JDK版本,大概JDK版本过低会出现这个org.openid4java.discovery.yadis.YadisException: 0x704: I/O transport ...
- bzoj4987: Tree(树形dp)
Description 从前有棵树. 找出K个点A1,A2,…,Ak. 使得∑dis(AiAi+1),(1<=i<=K-1)最小. Input 第一行两个正整数n,k,表示数的顶点数和 ...
- Java实现日期时间对象的使用
利用类对象计算日期 在利用Java语言进行信息系统开发中,经常需要对日期进行计算和转换,比如,设置了某活动的开始日期和结束日期,系统需要判断当前是否是该活动时间,在Java开发的信息系统中,通常日期以 ...
- zabbix详细介绍及其自动动态发现
zabbix3.2.1 第1章 安装 1.1 查看系统环境 [root@centos7-2 ~]# [root@centos7-2 ~]# hostname -I 10.0.0.10 172.16.1 ...
- CSMA/CA协议
802.11中采用CSMA/CA协议来规定多个工作节点共用信道的问题. CSMA/CA的全称是Carrier sense multiple access with collision avoidanc ...
- Java多线程(十)线程间通信 join
若果主线程想等待子线程执行完成之后再结束,可以用join方法 join 和sleep区别 join内部有wait实现,所以当执行join方法后,当前线程的锁被释放,那么其他线程就可以调用此线程的同步方 ...