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目录添加到环境变量当中

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.https://www.telerik.com/fiddler

Windows安装Fiddler:

Fiddler安装及证书配置教程(Windows) - 柠檬草不孤单 - 博客园 (cnblogs.com)https://www.cnblogs.com/temari/p/13418037.html

fiddler功能

(1)支持IE,Chrome,FireFox等等浏览器;

(2)可以在phone,pad等移动设备进行连接;

(3)fiddler教程:

fiddler配置及使用教程 - purplelavender - 博客园 (cnblogs.com)https://www.cnblogs.com/woaixuexi9999/p/9247705.html【Fiddler学习】Fiddler教程,比较经典全面(转) - 伊凡Ivan - 博客园 (cnblogs.com)https://www.cnblogs.com/conquerorren/p/8472285.html

Fiddler设置移动端数据包

夜神模拟器配置

注意,代理服务器端口为fiddler的端口号,默认为8888;

fiddler设置

然后打开模拟器的浏览器,搜索:本机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 - 博客园https://www.cnblogs.com/nojacky/p/9497724.html

java1.8安装_2020JDK1.8安装教程详解(一次就可安装成功)_不懂就承认的博客-CSDN博客https://blog.csdn.net/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调试工具

ADB全名 Android Debug Bridge,是一个调试工具。

adb的构成和工作原理

adb包含三个部分

  • client端:运行在开发机器中,用来发送adb命令
  • 守护进程:运行在调试设备中,手机或模拟器,用来接收并执行adb命令
  • server端:用来管理client端和手机的守护进程之间的通信

adb常用命令

获取包名和界面名

  • 包名(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
  • 界面名为:.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抓包软件…https://zhuanlan.zhihu.com/p/49193525

启动成功展示:

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 - Appiumhttp://appium.io/docs/en/about-appium/api/

adb连接不到设备报错

将这个文件

 复制到这里

 然后将nox_adb改名为adb,原先的文件大家可以做个备份

猜你喜欢

转载自blog.csdn.net/qq_52914337/article/details/124080270