某音直播视频爬取

Posted xjrecord

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了某音直播视频爬取相关的知识,希望对你有一定的参考价值。

在很火的某音平台,爬取一些自己感兴趣的东西,一路上跌跌撞撞,做个记录,便于日后翻看回忆。

1、手动拉流(wireshark+VLC)

最最开始,使用wireshark抓包,然后拿到流后,结合VLC手动拉流,进度极慢,不过也是比较适合小量拉流,不然脚本维护不是很熟练的话,并没有事半功倍的效果。

2、读取json文件自动保存(fiddler+python+ffmpeg)

由于进度太慢,然后开始在网上搜索别人的教程跟着一步步走,但是还是相对比较曲折。起初还是找flv格式的流直接保存,不过效率是有提高,后来同事说ffmpeg直接保存m3u8的流更快,果不其然,的确要好一些,也算是尝到了一些甜头。

当然还是有一个问题,效率还是比较低,只能保存已经浏览的直播间的流。

因为我是手动滑到不同的直播间,然后用fiddlerScript将进入直播间的url保存到json文件,再用python读取json文件找到流地址,再ffmpeg自动分割保存,保存任意时长的视频。

3、尝试全自动化

工具:手机(模拟器)连接,python,ffmpeg,adb,weditor,fiddler

(1)adb建立连接;

(2)weditor连接设备,定位元素。(已经在上一篇中有记录https://www.cnblogs.com/xjrecord/p/13680248.html,也是还在摸索的路上,嘻嘻)

(3)python语言,调用uiautomator2和subprocess包;

(4)fiddler保存流地址到log文件中;

技术图片

 

 

(5)读取文件中的流地址,ffmpeg分割保存视频

def shell(cmd):
print(‘执行命令:‘ + cmd)
p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, shell=True)
(stdout_output, err_output) = p.communicate()
time.sleep(2)
if err_output != None and len(err_output) != 0:
print("Shell err_output: " + str(err_output))
# print("stdout_output: " + str(stdout_output))
return stdout_output.decode().strip()
path =‘E:/dy/video/‘
count = 1
with open(r‘E:/log/request1.jsonl‘, ‘r‘) as f:
    url = f.readline()[:-1]
    print(url)
save_path =path + ‘dy-‘ +str(count) + ‘.mp4‘
cmd_save = "ffmpeg -i " + url + " -vcodec copy -t 15 " + save_path
shell(cmd_save)


 












以上是关于某音直播视频爬取的主要内容,如果未能解决你的问题,请参考以下文章

python解决m3u8直播视频的爬取

Python爬虫进阶 | 某音字体反爬分析

牛客SQL大厂真题——某音短视频

牛客SQL大厂真题——某音短视频

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

短视频dy(某音)高版本最新最全4种抓包方案,第1种让你秒破QUIC协议,破解抓包难题,看我这一篇就够了!