作为爬虫工程师,没有价格不知道selenium的。 什么是selenium? Selenium原本是一个用于Web应用程序自动化测试工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。我们爬虫工程师使用selenium来抓取动态web页面。 今天的Python学习教程我们来介绍另一款自动化测试工具,Appium。 Appium官方文档 https://github.com/DoctorQ/appium/blob/master/docs/en/about-appium/intro.md 什么是Appium? Appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的。可用于IOS和Android以及firefox的操作系统。 原生的应用是指用android或ios的sdk编写的应用 移动网页应用是指网页应用,类似于ios中safari应用或者Chrome应用或者类浏览器的应用。 混合应用是指一种包裹webview的应用,原生应用于网页内容交互性的应用。 重要的是Appium是跨平台的,何为跨平台,意思就是可以针对不同的平台用一套api来编写测试用例。 同样的Appium原本是一个用于app应用自动化测试工具,我们爬虫工程师也可以利用它,在抓取app应用数据。 Appium相当于一个服务器,我们可以向Appium发送一些操作指令,Appium就会根据不同的指令对移动设备进行驱动,完成不同的动作。 一、本次Python学习教程的目的: 我们以Android平台的手机京东为例来演示Appium启动和操作App的方法,最终实现抓取手机京东商品数据。 二、准备工作 确保PC已经安装好Appium,本实例在windows环境下安装,安装的appium版本为Appium-Desktop 安装好Android开发环境,uiautomatorviewer工具(必须)、python开发环境和Python版本的Appium API(Appium-Python-Client) android模拟器(夜神模拟器)安装好手机京东app 确保PC上已安装好mitmproxy抓包工具(必须)、fiddler抓包工具(非必须) 数据存储用数据库为Mongodb 三、获取Appium-Desktop使用的关键参数(Desired Capabilities参数) Desired Capabilities参数:它们分别是platformName、deviceName、appPackage、appActivity。 platformName:它是平台名称,需要区分Android或iOS,我们使用的是android平台,因此为Android。 deviceName:它是设备名称,此处是手机的具体类型,deviceName可以通过adb devices命令获取。 此处注意:模拟器显示为127.0.0.1,真实手机与模拟器显示不同,真实手机为一串字母数据结合 appPackage:它是App程序包名,该参数可以在adb shell中使用logcat获取。 命令后回车 随后,打开android模拟器中的手机京东app 在adb shell中,我们可以获取到appPackage和appActivity appActivity:它是入口Activity名,这里通常需要以 . 开头,该参数可以在adb shell中使用logcat获取。 其中: appPackage为:com.jingdong.app.mall appActivity为:com.jingdong.app.mall.MainFrameActivity 获取到Appium-Desktop使用的关键参数(Desired Capabilities参数)后,我们就可以启动Appium-Desktop了 四、启动Appium-Desktop服务器 确认appium-desktop启动成功后,我们就可以编写代码了 五、编写app启动代码 from appium import webdriver 六、运行代码启动app 确认手机京东app启动成功,并且无报错后,我们就可以编写自动化代码来控制app行为了 如何来定位app内部控件节点呢 答案是使用uiautomatorviewer 通过获取控件的xpath,我们就可以定位到app控件了 七、编写自动化代码 #等待app启动 自动化代码编写完成之后,运行一下,看是否有问题,如无问题,就可以进行下一步了 八、抓取应用数据包 这里,我们通过fiddler抓包工具获取到手机京东的数据包 查看response,确实是我们想要的数据,接下来就可以编写解析响应数据代码了 九、编写解析响应数据代码 import json 十、编写数据存储逻辑代码 import pymongo 十一、启动mitmdump,解析数据! 注意:手机或模拟器一定要设置mitmdump服务器IP的代理 启动mitmdump: mitmdump -p 8889 -s decode_jingdong.py 十二、接下来,启动自动化控制脚本就可以抓取到数据了 python jingdong.py 十三、查看数据 更多的Python学下教程也会继续为大家更新! |
|
来自: 千锋Python学堂 > 《Python基础教程分享》