Python爬虫:详解Appium如何爬取手机App数据以及模拟用户操作手势

您所在的位置:网站首页 抓取app请求 Python爬虫:详解Appium如何爬取手机App数据以及模拟用户操作手势

Python爬虫:详解Appium如何爬取手机App数据以及模拟用户操作手势

2024-06-09 04:08| 来源: 网络整理| 查看: 265

头图

目录 Appium 模拟操作 屏幕滑动 屏幕点击 屏幕拖动 屏幕拖拽 文本输入 动作链 实战:爬取微博首页信息

Appium

在前文的讲解中,我们学会了如何安装Appium,以及一些基础获取App元素内容的方式。但认真看过前文的读者,肯定在博主获取元素的时候观察到了一个现象。

那就是手机App的内容并不是一次性加载出来的,比如大多数Android手机列表ListView,都是异步加载,也就是你滑动到那个位置,它才会显示出它的内容。

效果出处 也就是说,我们前面爬取微博首页全部信息的时候,如果你不滑动先加载一定的微博内容,也就如上图所示,只能获取2个微博内容。

模拟操作

所以,我们要实战获取微博内容的话,首先你需要学会如何模拟滑动屏幕操作。下面,我们来一一介绍屏幕的互动操作。

屏幕滑动

在Python的Appium-Python-Client包中,我们通过swipe()函数模拟用户手势从A滑动到B点,其具体的方法定义如下所示:

def swipe(self: T, start_x: int, start_y: int, end_x: int, end_y: int, duration: int = 0) -> T

start_x:开始位置的横坐标

start_y:开始位置的纵坐标

end_x:结束位置的横坐标

end_y:结束位置的纵坐标

duration:持续时间,也就是处于距离后生成滑动速度

当然,滑动的方法还有一个:flick(),它只有4个参数,缺少duration参数,也就是快速从某个位置滑动到指定的位置。

示例代码:

from appium import webdriver import time server = "http://localhost:4723/wd/hub" desired_caps = { "platformName": "Android", "deviceName": "liyuanjing", "appPackage": "com.sina.weibo", "appActivity": "com.sina.weibo.MainTabActivity", } driver = webdriver.Remote(server, desired_caps) time.sleep(5) el1 = driver.find_element_by_id("com.android.permissioncontroller:id/permission_allow_button") el1.click() time.sleep(5) driver.swipe(500,500,500,2000,3000)

上面代码实现的下拉屏幕刷新功能,下拉刷新其实也是一个滑动的操作,是先滑动一段距离然后松开。

当然,如果你要实现上滑加载



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3