当前位置: 首页 > news >正文

Python自动化抖音自动刷视频

环境准备

  • Python3.5以上
  • Appium Server服务器
  • Android SDK,需要用到adb服务
  • 需要依赖Appium-Python-Client组件库
  • 真机或者模拟器,推荐模拟器(真机一般安卓8版本以上了,appium对安卓8以上版本元素获取的兼容性不太好)
  • JDK8环境

实现

确保adb服务和appium服务及真机/模拟器正常打开,然后在真机/模拟器上将抖音打开。

确定需要的参数

参数基本上都是固定的,只需要确定抖音的包名和活动页即可。

adb shell dumpsys window | findstr mCurrentFocus获取到抖音的包名数据,最后代码里的参数:

desired_caps = {
    "platformName": "Android",	# 平台是安卓的
    "deviceName": "127.0.0.1:62001",  # 通过 adb devices命令获取
    "appPackage": "com.ss.android.ugc.aweme",	# 抖音包名
    "appActivity": ".splash.SplashActivity",	# 活动页
    "platformVersion":"7.1" # 7.1.2
}

参数整完记得项目跑起来测试一下。

控制模拟器进入抖音后

我们需要去获取页面上的元素或坐标,来实现滑动视频等其他操作。

到我们的Android SDK的tools目录下使用uiautomatoviewer.bat取页面快照。

操作的过程其实相对简单,就是实现页面滑动即可;可能会遇到弹框、点击授权之类的,处理一下即可。然后还需要注意的就是元素的加载时间问题,尽量考虑好网络、设备等其他因素,将等待时间放长些。

# @creator by wlh
# @date 2023/3/15 19:43
import time

from appium import webdriver
from appium.webdriver.common.touch_action import TouchAction
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec

desired_caps = {
    "platformName": "Android",
    "deviceName": "127.0.0.1:62001",  # 通过 adb devices命令获取
    "appPackage": "com.ss.android.ugc.aweme",
    "appActivity": ".splash.SplashActivity",
    "platformVersion": "7.1"  # 7.1.2
}

driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desired_capabilities=desired_caps)

driver.implicitly_wait(20)	# 等待弹框元素
driver.find_element(By.XPATH, "//*[@text='同意']").click()
driver.implicitly_wait(20)	# 等待弹框元素
driver.find_element(By.XPATH, "//*[@text='允许']").click()

time.sleep(1.5)
size = driver.get_window_size()
width, height = size['width'], size['height']	# 获取屏幕宽高

action = TouchAction(driver)
for i in range(5):
    # 实现滑动
    action.press(x=width / 2, y=height / 3 * 2).wait(500).move_to(x=width / 2, y=height / 3).release()
    action.perform()
    try:
        # 3s后 弹框元素不出现,直接跳过继续执行
        WebDriverWait(driver, 3).until(ec.presence_of_element_located((By.XPATH, "//*[@text='允许']")))
        driver.find_element(By.XPATH, "//*[@text='允许']").click()
    except:
        pass

time.sleep(5)
driver.close_app()
driver.quit()

相关文章:

  • 基于Vue+Vue-cli+webpack搭建渐进式高可维护性前端实战项目
  • C#等高级语言运行过程
  • 人脸活体检测系统(Python+YOLOv5深度学习模型+清新界面)
  • 超详细的堆排序,进来看看吧。
  • HTTP 缓存的工作原理
  • STM32开发(九)STM32F103 通信 —— I2C通信编程详解
  • Leetcode 6322. 检查骑士巡视方案 暴力模拟法 第337场周赛,第二题
  • 蚂蚁一面面试经历
  • Spring事务和事务传播机制
  • ChatGPT加强版GPT-4面世,打工人的方式将被颠覆
  • oracle和mysql的区别
  • 指针进阶(上)
  • C++ 手撸简易服务器(完善版本)
  • string类(上)
  • SpringCloud五大核心组件
  • Apache Zeppelin在Apache Trafodion上的可视化
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Java多线程(4):使用线程池执行定时任务
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • JSONP原理
  • nginx(二):进阶配置介绍--rewrite用法,压缩,https虚拟主机等
  • PaddlePaddle-GitHub的正确打开姿势
  • Phpstorm怎样批量删除空行?
  • socket.io+express实现聊天室的思考(三)
  • Tornado学习笔记(1)
  • Vue组件定义
  • 测试开发系类之接口自动化测试
  • 大整数乘法-表格法
  • 对JS继承的一点思考
  • 计算机在识别图像时“看到”了什么?
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 力扣(LeetCode)56
  • 前端 CSS : 5# 纯 CSS 实现24小时超市
  • 微信小程序--------语音识别(前端自己也能玩)
  • 新书推荐|Windows黑客编程技术详解
  • 云大使推广中的常见热门问题
  • 正则表达式
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​如何使用ArcGIS Pro制作渐变河流效果
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • #多叉树深度遍历_结合深度学习的视频编码方法--帧内预测
  • (03)光刻——半导体电路的绘制
  • (C语言)求出1,2,5三个数不同个数组合为100的组合个数
  • (编译到47%失败)to be deleted
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (九)c52学习之旅-定时器
  • (九)信息融合方式简介
  • (十八)devops持续集成开发——使用docker安装部署jenkins流水线服务
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)详解PHP处理密码的几种方式
  • (转载)Linux网络编程入门
  • .gitattributes 文件
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .Net FrameWork总结
  • .Net MVC + EF搭建学生管理系统