Python爬虫编程14 | 您所在的位置:网站首页 › appium爬虫 › Python爬虫编程14 |
目录 移动端数据简介 adb的简介与使用 adb的安装与使用 adb有什么作用? adb如何使用? fiddler抓包工具的使用 常见App抓包软件对比 fiddler抓包工具 什么是fiddler? fiddler功能 Fiddler设置移动端数据包 夜神模拟器配置 fiddler设置 Appium爬取移动端 环境搭建 Java环境 AndroidSDK环境搭建 adb调试工具 adb的构成和工作原理 adb常用命令 Appium介绍和安装 Appium介绍 Appium环境搭建 Appium抓取元素 Appium快速使用 adb连接不到设备报错 移动端数据简介随着互联网的发展,数据不仅仅知识存在于PC端。移动端的数据在这几年的占比以及势头发展趋势呈现几何倍数的增长。对于做数据分析,用户画像,市场调研来说仅仅参考PC端的数据是不够的。那么与此同时移动的数据就显得尤为重要。 adb的简介与使用 adb的安装与使用Adb又称Android调试桥,用于通过电脑端与模拟器或者是设备之间的交互的一个工具 Adb client 命令行程序‘adb’用于从shell或脚本中运行adb命令 Adb server adb server 是运行在PC的的一个后台程序 Adbd 程序adbd作为一个后台进程在Android设备或模拟器系统中运行 adb有什么作用? 安装卸载apk文件移动设备和PC之间拷贝文件查看设备上安装的应用信息文件管理按键操作 adb如何使用?把adb的bin目录添加到环境变量当中 Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯。 官网: Fiddler | Web Debugging Proxy and Troubleshooting SolutionsExplore the Fiddler family of web debugging proxy tools and troubleshooting solutions. Easily debug, mock, capture, and modify web and network traffic. Windows安装Fiddler: Fiddler安装及证书配置教程(Windows) - 柠檬草不孤单 - 博客园 (cnblogs.com) (1)支持IE,Chrome,FireFox等等浏览器; (2)可以在phone,pad等移动设备进行连接; (3)fiddler教程: fiddler配置及使用教程 - purplelavender - 博客园 (cnblogs.com) 注意,代理服务器端口为fiddler的端口号,默认为8888; 然后打开模拟器的浏览器,搜索:本机ip:代理端口号,下载证书; 然后对它随意命名即可: 这样fiddler就设置好了,我们就可以使用fiddler抓取到数据包了。 然后用requests模块正常发送请求即可;如: import requests headers = { 'Host': 'mapi.kyboye.com', 'User-Agent': 'KaoYanBang AipBot/1.0 (KaoYanClub-Android/3.2.9; android/7.1.2; samsung+SM-G9810)' } url = 'https://mapi.kyboye.com/club/thread/guide?type=5&skip=0&psize=40&_t=1649396710844' res = requests.get(url, headers=headers) print(res.json())这里要强调的是,fiddler获取header和url: 点击Just url和Headers only即可。 Appium爬取移动端 环境搭建1.搭建java环境 2.搭建Android环境 Java环境Java环境搭建: java1.8安装及环境变量配置 - nojacky - 博客园 java1.8安装_2020JDK1.8安装教程详解(一次就可安装成功)_不懂就承认的博客-CSDN博客 将SDK保存到任意硬盘下 Android SDK文件夹解压到任意目录配置环境变量 1.进入我的电脑 -> 属性 -> 高级系统设置 -> 环境变量 2.在系统变量下点击新建 -> 变量名: ANDROID_HOME -> 变量值:D:\android-sdk -> 点击确定按钮 3.在系统变量下找到系统的path变量,最后添加:;%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools;(最前面是一个分号,如果path变量最后已有分号,可不用添加) -> 点击确定按钮或直接添加D:\androidsdk\platform-tools验证环境变量 重启命令行工具,命令行输入adb,不报错即可与模拟器设备相连 上述的软件环境都准备好以后,要自动化手机APP,需要: 在你运行程序的电脑上 用 USB线 连接上 你的安卓手机进入 手机设置 -> 关于手机 ,不断点击 版本号 菜单(5次以上),退出到上级菜单,在开发者模式中,启动USB调试如果用模拟器 打开设置,找到关于平板电脑找到版本号,连续点击,直到弹出开启发开者模式退出到上级菜单,在开发者模式中,启动USB调试 adb调试工具ADB全名 Android Debug Bridge,是一个调试工具。 adb的构成和工作原理adb包含三个部分 client端:运行在开发机器中,用来发送adb命令守护进程:运行在调试设备中,手机或模拟器,用来接收并执行adb命令server端:用来管理client端和手机的守护进程之间的通信获取包名和界面名 包名(package):决定程序的唯一性(不是应用的名字)界面名(activity):目前可以理解,一个界面名,对应着一个界面使用步骤 打开需要测试的应用程序输入adb命令 adb shell dumpsys window windows | findstr mFocusedApp打开设置界面,输入命令adb shell dumpsys window windows | findstr mFocusedApp adb shell dumpsys window windows | findstr mFocusedApp mFocusedApp=AppWindowToken{2c5d0fc token=Token{39766def ActivityRecord{2d26ace u0 com.android.settings/.Settings t2}}} 包名为:com.android.settings界面名为:.Settingsadb其他命令 appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用,且是跨平台的。可用于iOS和Android操作系统。原生的应用是指Android或iOS的SDK编写的应用,移动网页应用是指网页应用,类似于ios中Safari应用或者Chrome应用或者类浏览器的应用。混合应用是指一种包裹webview的应用,原生应用于网页内容交互性的应用。 Appium环境搭建使用Appium和Python来进行自动化测试,需要安装两个东西,一个是appium的客户端,一个是appium-python库,这两个需要安装的东西在加上手机就可以进行自动化测试了。他们之间的关系是:Python代码->Appium-Python库->Appium->手机。 教程: Appium环境搭建超详细教程 - 知乎前言:本系列教程会从软件的基本安装开始,最终目的是通过完成几个案例后, 大家实现 自由抓取App中想要的资源。本系列以后会更的: Appium基本使用及控制真机及安卓模拟器Mitmproxy抓包工具的基本使用Fiddler抓包软件… 启动成功展示: appium-python库安装 pip install Appium-Python-Client Appium抓取元素 即可像selenium一样在页面上提取数据了。 Appium快速使用打开模拟器中的浏览器,输入百度网址并打开 步骤 打开手机模拟器打开appium工具创建Python项目复制代码,并运行 from appium import webdriver caps = dict() caps['platformName'] = 'Android' caps['platformVersion'] = '5.1.1' caps['deviceName'] = 'Android' caps['appPackage'] = 'com.android.browser' caps['appActivity'] = '.BrowserActivity' caps['unicodeKeyboard'] = True caps['resetKeyboard'] = True caps['noReset'] = True caps['newCommandTimeout'] = 6000 caps['automationName'] = 'UiAutomator2' driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', caps) driver.get('https://www.baidu.com/')打开游戏中心并搜索淘宝 from appium import webdriver from appium.webdriver.extensions.android.nativekey import AndroidKey caps = dict() caps['platformName'] = 'Android' # 被测手机是安卓 caps['platformVersion'] = '5.1.1' # 手机安卓版本 caps['deviceName'] = 'Android' # 设备名,安卓手机可以随意填写 caps['appPackage'] = 'com.bignox.app.store.hd' # 启动APP Package名称 caps['appActivity'] = '.ui.activity.MainActivity' # 启动Activity名称 caps['unicodeKeyboard'] = True # 使用自带输入法,输入中文时填True caps['resetKeyboard'] = True # 执行完程序恢复原来输入法 caps['noReset'] = True # 不要重置App caps['newCommandTimeout'] = 6000 caps['automationName'] = 'UiAutomator2' # 连接Appium Server,初始化自动化环境 driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', caps) # 设置等待时间 driver.implicitly_wait(10) try: skip = driver.find_element_by_id('com.bignox.app.store.hd:id/btn_skip') if skip: skip.click() except: pass driver.find_element_by_id('com.bignox.app.store.hd:id/tv_search').click() search = driver.find_element_by_id('com.bignox.app.store.hd:id/et_word') search.send_keys('淘宝') # 输入回车键,确定搜索 driver.press_keycode(AndroidKey.ENTER)注: from appium import webdriver # from selenium import webdriver caps = dict() # 系统 caps['platformName'] = 'Android' # 手机安卓版本 5 5.1 5.1.1 caps['platformVersion'] = '5.1.1' # 设备名字 可以随便写 caps['deviceName'] = 'Android' # 包名 caps['appPackage'] = 'com.tal.kaoyan' # 界面名字 caps['appActivity'] = '.ui.login.LoginActivity' # 使用自带的输入法,输入中文填True caps['unicodeKeyboard'] = True # 执行完程序恢复原来输入法 caps['resetKeyboard'] = True caps['noReset'] = True # localhost driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', caps)Appium文档:API Documentation - Appium 将这个文件 复制到这里 然后将nox_adb改名为adb,原先的文件大家可以做个备份 |
CopyRight 2018-2019 实验室设备网 版权所有 |