Python短视频大法?通过uiautomator2实现某音主播数据获得

Posted 徐浪老师

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python短视频大法?通过uiautomator2实现某音主播数据获得相关的知识,希望对你有一定的参考价值。

文章目录


前言

大数据时代,哪里是流量洼地,哪里就有赚钱机会,但是想要有所收货,也得需要大量的数据支持!


一、采集页面

纯自动化的手段,实现某音主播数据的采集,不涉及接口逆向。已经使用过uiautomator2的同学可以跳过这篇基础文章。不了解的同学可以翻下我之前的文章,至少要明白uiautomator2做的什么事情。

app版本:23.4.0

采集页面如下:

二、点击流程拆解

1、打开app

代码如下(示例):


import uiautomator2 as u2
d = u2.connect('18803bf5') # 设备对象 

d.app_start(‘com.ss.android.ugc.aweme’, use_monkey=True)

2.搜索关键词,进入到主播列表页

代码如下(示例):


# 点击首页搜索
d(resourceId="com.ss.android.ugc.aweme:id/h9g").click()
# 输入关键词 美食
d(resourceId="com.ss.android.ugc.aweme:id/et_search_kw").set_text('美食')
# 点击搜索
d(resourceId="com.ss.android.ugc.aweme:id/tof").click()
# 点击用户
d(resourceId="android:id/text1", text="用户").click()

该处使用的url网络请求的数据。


3、点击主播进入个人详情页

d.xpath(‘//*[@resource-id=“com.ss.android.ugc.aweme:id/jt_”]/android.widget.FrameLayout[1]’).click()

4、提取详情页数据并返回上一页


# 提取主播名称
user_name = d(resourceId="com.ss.android.ugc.aweme:id/l0p").get_text()
# 提取粉丝数
fans_num = d(resourceId="com.ss.android.ugc.aweme:id/uh+").get_text()
# 返回列表页
d.press('back')

5、遍历列表页主播,依次点击进入采集


# 列表页展示主播数量
user_num = len(d.xpath('//*[@resource-id="com.ss.android.ugc.aweme:id/jt_"]/android.widget.FrameLayout').all())
for i in range(1, user_num+1):
    d.xpath(f'//*[@resource-id="com.ss.android.ugc.aweme:id/jt_"]/android.widget.FrameLayout[i]').click()
    # 重复步骤4操作

6、滑动翻页

#从下向上滑动
d.swipe(0.498, 0.854, 0.52, 0.153)

三、完整代码


import time
import uiautomator2 as u2

d = u2.connect('18803bf5')  # 设备序列号
d.app_start('com.ss.android.ugc.aweme', use_monkey=True)
time.sleep(10)  # 等待app启动完成
d(resourceId="com.ss.android.ugc.aweme:id/h9g").click()
time.sleep(5)  # 等到搜索入口显示
d(resourceId="com.ss.android.ugc.aweme:id/et_search_kw").set_text('美食')
d(resourceId="com.ss.android.ugc.aweme:id/tof").click(timeout=3)
d(resourceId="android:id/text1", text="用户")
for _ in range(10):  # 设置翻页10次结束
    user_num = len(d.xpath('//*[@resource-id="com.ss.android.ugc.aweme:id/jt_"]/android.widget.FrameLayout').all())
    for i in range(1, user_num+1):
        d.xpath(f'//*[@resource-id="com.ss.android.ugc.aweme:id/jt_"]/android.widget.FrameLayout[i]').click()
        time.sleep(5)  # 等待主页加载完成
        user_name = d(resourceId="com.ss.android.ugc.aweme:id/l0p").get_text()
        fans_num = d(resourceId="com.ss.android.ugc.aweme:id/uh+").get_text()
        d.press('back')
    time.sleep(2)
    d.swipe(0.498, 0.854, 0.52, 0.153)
    time.sleep(2)  # 滑动完成后主动等待2秒,待新的列表也展示出

总结

代码只提取了主播名称和粉丝数信息,需要提取哪些内容可以直接根据ID或xpath路径获取到,理论上可见即可采。需要注意的是,代码中的等待时间取决于设备是否卡顿,网络是否流畅等因素。

另外,执行代码前要确保app版本正确,设备序列号是否修改。

深入解析,python合并多张图片成视频,可用于批量制作短视频

随着短视频的兴起,越来越多的人开始用各种形式进行视频制作,本篇博客从程序员的角度为大家解析一下如何通过 Python 合并多个图片为一个视频

文章目录

合并多张图片到视频的方法说明

除了使用 OpenCV 合并多张图片成视频外,还可以使用其他工具和库,例如:

  • moviepy: 这是一个基于 Python 的视频编辑库,可以帮助您快速和简便地合并多张图片成视频。

  • FFmpeg: 这是一个强大的视频编辑工具,可以在命令行中合并多张图片成视频。

moviepy 将多张图片合成视频

安装 moviepy 库:在命令行或终端中运行 pip install moviepy 安装 moviepy。

导入所需模块

在 Python 代码中导入所需模块,如下:

from moviepy.editor import ImageSequenceClip

创建 ImageSequenceClip 对象

使用 ImageSequenceClip 函数创建 ImageSequenceClip 对象,该函数的参数包括图片的路径、帧率等。例如:

from moviepy.editor import ImageSequenceClip

image_path = "./images/"
fps = 1
clip = ImageSequenceClip(image_path, fps=fps)

保存视频

使用 write_videofile() 函数将合并后的视频保存到本地,如下:

clip.write_videofile("output.mp4", fps=fps)

1秒1帧图片。

moviepy 合成多张图片更多配置

可以通过一些额外的配置来调整合成视频的外观。

设置视频大小:使用 size 参数指定视频的大小:

clip = ImageSequenceClip(image_path, fps=fps, size=(640, 480))

设置视频长度:使用 duration 参数指定视频的长度:

clip = ImageSequenceClip(image_path, fps=fps, duration=5)

设置视频帧顺序:使用 iter_images 参数指定图片的顺序,如下:

def image_gen():
    for i in range(10, 0, -1):
        yield "image_.png".format(i)
clip = ImageSequenceClip(image_gen(), fps=fps)

添加音频:使用 AudioFileClip 函数创建音频,然后使用 set_audio 函数将音频添加到视频中,如下:

from moviepy.audio.io.AudioFileClip import AudioFileClip

audio = AudioFileClip("xiangpica_music.mp3")
clip.set_audio(audio)

名词解释

  • 帧率:帧率(fps)是指每秒显示的帧数,一般的视频帧率为 24 fps 或 30 fps。帧率越高,视频就越流畅,文件也会越大。

  • 视频格式:视频格式是指视频文件的存储格式,常见的格式有 MP4、AVI、MOV 等。

  • 视频编码:视频编码是指视频文件的数据压缩格式,常见的编码有 H.264、VP9 等。

  • 音频编码:音频编码是指音频文件的数据压缩格式,常见的编码有 MP3、AAC 等。

  • 图像格式:图像格式是指图像文件的存储格式,常见的格式有 PNG、JPG、BMP 等。

FFmpeg 将多张图片合成视频

可以使用 FFmpeg 库来将多张图片合成视频,下面是一个简单的示例:

import os

images_path = './images'
video_name = './video/output.mp4'
fps = 2

os.system(
    f'ffmpeg -y -framerate fps -i "images_path/%d.jpeg" -c:v libx264 -r fps -pix_fmt yuv420p "video_name"')
  • 在上述代码中,需要提供存储图片的文件夹路径 images_path 和最终生成的视频文件名 video_name

  • FFmpeg 命令中的参数 -framerate 指定了图片的帧率,-i 指定了图片的文件名,图片文件名按照顺序命名为 1.jpg2.jpg 等,图片名称根据你本地电脑文件配置即可。

  • 参数 -c:v libx264 指定了视频的编码格式,-r 指定了视频的帧率,-pix_fmt yuv420p 指定了图像的格式。

上述示例中使用的是 MP4 视频格式,如果需要使用其他格式,可以在 video_name 中更改文件扩展名。

📢📢📢📢📢📢
💗 你正在阅读 【梦想橡皮擦】 的博客
👍 阅读完毕,可以点点小手赞一下
🌻 发现错误,直接评论区中指正吧
📆 橡皮擦的第 858 篇原创博客

👇 全网 6000+人正在学习的 爬虫专栏 👇👇👇👇

以上是关于Python短视频大法?通过uiautomator2实现某音主播数据获得的主要内容,如果未能解决你的问题,请参考以下文章

短视频篇 | Python 带你进行短视频二次创作

app小程序手机端Python爬虫实战18-通过mitmproxy解析短视频App返回数据

深入解析,python合并多张图片成视频,可用于批量制作短视频

用 Python 和 EV 剪辑短视频

利用Python实现视频号自动赚钱一条龙

利用Python实现视频号自动赚钱一条龙