当前位置:   article > 正文

在手机或电脑上用Python爬取B站视频和音频

在手机或电脑上用Python爬取B站视频和音频

手机请看:隐形的抖音 - 抖音 (douyin.com)

使用方法:

一、新建一个目录,创建python文件main.py(代码在下面)
二、打开B站,点击要下载视频的网页,在分享中点击 “获取视频分享链接”,一段带网址的字符串已经复制了。稍后运行python后 右键就会粘贴上命令行。
三、右键粘贴:  【带妈妈体验女明星的一天!雇十几个群演扮狂热粉丝,场面一度失控!】 https://www.bilibili.com/video/BV1qt421t7sy/?share_source=copy_web&vd_source=8c16ac376754bbd7a9a173417a9fe597

(注意:为了方便生成对应文件名,所以粘贴内容必须带有“【" xxx "】"这两个符号,中间为文件命名名称)网址为自动识别。

四、回车后,无错误即爬取完成。

五、在main.py当前文件夹里生成xxx.mp4和xxx.mp3文件。

六、后续需要FFMPEG才能合并成完整带声音的MP4视频。

网上搜索的代码,原文已找不到,开始使用不是很方便,经修改后,实测可以使用,可生成应用程序独立使用,代码如下:

  1. import requests
  2. import re
  3. import json
  4. import io
  5. headers={
  6. "User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36",
  7. "referer": "https://message.bilibili.com/",#这段代码的意思是你从哪儿获得这个网址的(换一句话讲,谁推荐你去访问这个网址的).有了它就能够正常访问.
  8. }
  9. def extract_content(text, symbol):
  10. pattern = r'%s(.*?)%s' % (symbol, symbol)
  11. result = re.findall(pattern, text)
  12. return result
  13. text=input('请输入b站视频网址:')
  14. symbol = ["【","】"]
  15. result = (extract_content(text, symbol))[0]
  16. print('文件名为:'+result) # 输出: ['World']
  17. url_regex = r'http[s]?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+'
  18. urls = (re.findall(url_regex, text))[0]
  19. print('网址:'+urls)
  20. mp4=result+'.mp4'
  21. mp3=result+'.mp3'
  22. def get_url_html(url):
  23. req=requests.get(url,headers=headers)
  24. htmltext=req.text
  25. get_json(htmltext)
  26. def get_json(htmltxt):
  27. r=re.findall(r'<script>window.__playinfo__=(.*?)</script>',htmltxt)[0]
  28. js=json.loads(r)
  29. audiourl=js["data"]["dash"]["audio"][0]["base_url"]
  30. videourl=js["data"]["dash"]["video"][0]["base_url"]
  31. download(audiourl,videourl)
  32. def download(audiourl,videourl):
  33. res=requests.get(url=audiourl,headers=headers)
  34. print('爬取中,等待....')
  35. with open(mp3,"wb") as f:
  36. f.write(res.content)
  37. res=requests.get(url=videourl,headers=headers)
  38. with open(mp4,"wb") as f:
  39. f.write(res.content)
  40. print('爬取完毕!')
  41. if __name__=="__main__":
  42. get_url_html(urls)

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/222739
推荐阅读
相关标签
  

闽ICP备14008679号