爬取B站视频下载

https://www.ku6.com/video/detail?id=udfY7DjsSXbg8ghbDnhUwNTinOY


import time
import requests
from bs4 import BeautifulSoup

headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"
}

def get_html():

    stream=requests.get('https://rbv01.ku6.com/wifi/o_1ej9q59hk1rpe7hm9os1v9v1btna', headers=headers,stream=True).content
    with open('D:/some.mp4', 'wb') as file:
        file.write(stream)
if __name__ == '__main__':
    get_html()

将视频合并函数暂时不写,网上用到第三方软件

详情请看这个

https://www.cnblogs.com/cyx-b/p/13833369.html

1.填入url
2.登录账号后cookie

后面步骤比较常规,就不写了

比如根据bv号,或者爬取一个集合的视频。

这里有个问题,因为是用正则强洗,如果视频不支持超清4
我这个正则语句是匹配不到的

import time
import requests_html
from bs4 import BeautifulSoup
import re
import requests
import subprocess

class Bilbil():
    def __init__(self,url):
        self.url=url
    headers = {
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36",
        'Origin': 'https://www.bilibili.com',
        'cookie': ''
    }
    title=None
    def get_video_url(self):
        # 用requests_html 请求网页中的js
        requests = requests_html.HTMLSession()
        resopnse = requests.get(self.url, headers=self.headers)
        #获取标题
        self.title = resopnse.html.find("#viewbox_report > h1 > span", first=True).text
        # 用正则强洗出1080清晰度的视频和音频
        _url = re.search("超清 4K(.*?)4K 超清", resopnse.text, re.S).group(1)
        urls = re.findall("base_url(.*?)\"backupUrl", _url)
        video_ = urls[2:3]
        audio_ = urls[-3:-2]
        video_url = re.search("\"\:\"(.*?)\"\,", str(video_), re.S).group(1)
        audio_url = re.search("\"\:\"(.*?)\"\,", str(audio_), re.S).group(1)
        self.download_video(video_url)
        self.download_audio(audio_url)

    def download_video(self, video_url):
        print(video_url)
        video_stream = requests.get(video_url, headers=self.headers,stream=True)
        if (video_stream.status_code == 200):
            with open('D:/video_temp.mp4', 'wb') as file:
                file.write(video_stream.content)
        else:
            print("视频请求错误")
            self.get_video_url()

    def download_audio(self,audio_url ):
        print(audio_url)
        audio_stream = requests.get(audio_url, headers=self.headers,stream=True)
        if (audio_stream.status_code == 200):
            with open('D:/audio_temp.mp4', 'wb') as file:
                file.write(audio_stream.content)
            #self.merge()
        else:
            print("音频请求错误")
            self.get_video_url()
    def merge(self):
        pass
        # print("视频合成开始:")
        # 
        # command = 'ffmpeg -i "%s_video.mp4" -i "%s_audio.mp4" -c copy "%s.mp4" -y -loglevel quiet' % (
        #     video_name, video_name, video_name)
        # subprocess.Popen(command, shell=True)
        # print("视频合成结束:%s" % video_name)


if __name__ == '__main__':
    url = 'https://www.bilibili.com/video/BV1ov41167vG'
    b = Bilbil(url)
    b.get_video_url()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值