admin管理员组文章数量:1794759
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的bin目录添加到环境变量当中
adb devices 查看链接的移动设备 adb kill-server 关闭链接的移动设备 adb install apk文件路径 安装app应用 adb shell pm list packages 查看应用包名 adb uninstall 应用包名 卸载应用 fiddler抓包工具的使用 常见App抓包软件对比 fiddler抓包工具 什么是fiddler?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.www.telerik/fiddler
Windows安装Fiddler:
Fiddler安装及证书配置教程(Windows) - 柠檬草不孤单 - 博客园 (cnblogs)wwwblogs/temari/p/13418037.html
fiddler功能(1)支持IE,Chrome,FireFox等等浏览器;
(2)可以在phone,pad等移动设备进行连接;
(3)fiddler教程:
fiddler配置及使用教程 - purplelavender - 博客园 (cnblogs)wwwblogs/woaixuexi9999/p/9247705.html【Fiddler学习】Fiddler教程,比较经典全面(转) - 伊凡Ivan - 博客园 (cnblogs)wwwblogs/conquerorren/p/8472285.html
Fiddler设置移动端数据包 夜神模拟器配置注意,代理服务器端口为fiddler的端口号,默认为8888;
fiddler设置然后打开模拟器的浏览器,搜索:本机ip:代理端口号,下载证书;
然后对它随意命名即可:
这样fiddler就设置好了,我们就可以使用fiddler抓取到数据包了。
然后用requests模块正常发送请求即可;如:
import requests headers = { 'Host': 'mapi.kyboye', 'User-Agent': 'KaoYanBang AipBot/1.0 (KaoYanClub-Android/3.2.9; android/7.1.2; samsung+SM-G9810)' } url = 'mapi.kyboye/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 - 博客园wwwblogs/nojacky/p/9497724.html
java1.8安装_2020JDK1.8安装教程详解(一次就可安装成功)_不懂就承认的博客-CSDN博客blog.csdn/weixin_29216049/article/details/114034465
AndroidSDK环境搭建将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全名 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 mFocusedApp=AppWindowToken{2c5d0fc token=Token{39766def ActivityRecord{2d26ace u0 com.android.settings/.Settings t2}}}- 包名为:com.android.settings
- 界面名为:.Settings
adb其他命令
Appium介绍和安装 Appium介绍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抓包软件…zhuanlan.zhihu/p/49193525
启动成功展示:
appium-python库安装
pip install Appium-Python-Client Appium抓取元素
即可像selenium一样在页面上提取数据了。
Appium快速使用打开模拟器中的浏览器,输入百度网址并打开
步骤
- 打开手机模拟器
- 打开appium工具
- 创建Python项目
- 复制代码,并运行
打开游戏中心并搜索淘宝
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('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('127.0.0.1:4723/wd/hub', caps)Appium文档:API Documentation - Appiumappium.io/docs/en/about-appium/api/
adb连接不到设备报错将这个文件
复制到这里
然后将nox_adb改名为adb,原先的文件大家可以做个备份
版权声明:本文标题:Python爬虫编程14——移动端爬取 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686470483a71112.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论