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()