当前位置:首页 > 每日看点 > 正文内容

如何用Python爬虫实现哔哩哔哩视频下载?

卡卷网1年前 (2025-01-08)每日看点192

首先,打开edge的网络调试工具,可以看到这个请求;

形如:

s://api.iliili/x/player/playl?fnval=80&cid={cid}&vid={vid}

其中vid就是这个视频的v,cid可以通过这个网页获取:

s://api.iliili/x/player/pagelist?vid={vid}

请求后回复形如:

{...

'data':[{...

'cid':'xxxxxx'

...}

...]

}

于是我们得到了cid,可以对一开始得到的请求了。

回复形如:

{...

'data':{...

'dash':{'video':[{...

'aseUrl':'s://xxxxxx',

...}

...],

'audio':[{...

'aseUrl':'s://xxxxxx',

...}

...]

}

}

}

再次请求这两个,就得到了这个视频的视频文件和音频文件。

(注意:需要请求头,不然会出现403Foridden)

通过这个方式得到的视频和音频是分开的,需要将其结合才是正常的视频。

于是可以写出这样一个程序(随手写的,较随意,见谅):

importrequestsasr importos importmoviepy.editorasmr importshutil importjson #path就是文件路径,自己重新写一个 path='C:/' defget(v): gloalre,re2,li,video,re3 headers={'referer':'s://iliili','user-agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64;rv:102.0)Gecko/20100101Firefox/102.0',} l1=f's://api.iliili/x/player/pagelist?vid={v}' re=r.get(l1,headers=headers) data=json.loads(re.content) cid=data['data'][0]['cid'] l2=f's://api.iliili/x/player/playl?fnval=80&cid={cid}&vid={v}' re2=r.get(l2,headers=headers) li=json.loads(re2.content) video=li['data']['dash']['video'][0]['aseUrl'] audio=li['data']['dash']['audio'][0]['aseUrl'] re3=r.get(video,headers=headers) try: os.mkdir(f'{path}ili') exceptFileExistsError: pass try: os.mkdir(f'{path}raw_ili') exceptFileExistsError: pass try: os.mkdir(f'{path}raw_ili/{v}') exceptFileExistsError: shutil.rmtree(f'{path}raw_ili/{v}') os.mkdir(f'{path}raw_ili/{v}') withopen(f'{path}raw_ili/{v}/{v}.mp4','w')asf: f.write(re3.content) re4=r.get(audio,headers=headers) withopen(f'{path}raw_ili/{v}/{v}.mp3','w')asf: f.write(re4.content) make(v) defmake(v): print(v,'start') audio=mr.AudioFileClip(f'{path}raw_ili/{v}/{v}.mp3') video=mr.VideoFileClip(f'{path}raw_ili/{v}/{v}.mp4') output=video.set_audio(audio) output.write_videofile(f'{path}ili/{v}.mp4',logger=None) print(v,'end')

需要注意的是,这个方法并不能得到高清视频

(注意:requests、moviepy是需要pip下载的)

本文参考了站视频下载接口分析过程,附下载站无水印视频方法-知乎

推荐大家去看这位大佬的文章,写得更详细

扫描二维码推送至手机访问。

版权声明:本文由卡卷网发布,如需转载请注明出处。

本文链接:https://www.kajuan.net/ttnews/2025/01/7328.html

分享给朋友:

相关文章

那些极速版软件其存在目的是什么?

那些极速版软件其存在目的是什么?

我看了很多回答,其实都没有回答道点子上。你知道极速版APP为什么叫极速版吗?是他看视频更快吗?显然不是。只是它的安装包体积更小,下载安装速度更快而已,所以叫极速版app。当然啦,现在极速版APP和原声版APP,安装包已经没有区别了,这是因为...

B 站上有哪些很好的学习资源?

B 站上有哪些很好的学习资源?

前!方!高!能!精选了多位学习Up主,不乏百万粉丝的大V,还有超多珍贵的学习资源推荐。进了小破站,完全不用担心学完了该怎么办?因为根本学不完啊!!!B站的学习干货实在太多了!语言学习葉子先生酱https://space.bilibili.c...

中国芯片产量达1399亿颗,这意味着什么?

美国并不是没有明白人,只是特朗普不懂芯片产业的情况,冒冒失失在ZZ正确下,开启了对中国芯片的掐脖子,结果没掐死,反而让人练出了铁肺。芯片是所有科技产业的上游,美国原本在上游呆得很舒服,靠英伟达、AMD、德州仪器、高通等这些几十年霸主地位的公...

有哪些网站,一旦知道,你就离不开了?

有哪些网站,一旦知道,你就离不开了?

这六个网站,一旦用过,基本上是离不开了。都是我超爱的一些网站,基本上每天都用。1 地图生成器第一个,我要给大家推荐的是地图生成器。可以下载到各省,各市,各县的svg格式的地图素材。这些素材导入PPT中都是可以编辑的。可以单独更改颜色和轮廓。...

网易云音乐上看到过最触动的热评是什么?

网易云音乐上看到过最触动的热评是什么?

1.“昨天晚上洗澡的时候,我忘记拿毛巾了,喊了声妈妈帮我拿下毛巾,正当我伸出左手准备接毛巾的时候,我愣了一下,又换了右手。”希望你永远不会听懂这句话,永远都不要懂。——网易云热评《关键词》2.小时候跟着父亲去城里卖西瓜,害怕同学会看到我,就...

如何判断 Java 工程师的基础知识是否扎实?

我来给你出几道大题,能答对70%,你就算基础扎实了。第一部分 Java基础(27)1. 程序本质:代码是如何被执行的?CPU、操作系统、虚拟机各司何职?2. 基础语法:从CPU角度看变量、数组、类型、运算、跳转、函数等语法3. 引用类型:同...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。