正则有问题,还在采集?参考下面的,题注原来的代码获取json中数据也是有问题的。
import requests
import re
import json
def get_url(url):
head={
'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36',
'referer':'https://www.bilibili.com/video/BV1mX4y1U7K2'
}
res=requests.get(url=url,headers=head)
return res
def get_json_url(url):
res=get_url(url).text
title=re.findall('<title data-vue-meta="true">([^<]+)',res)[0].replace('_哔哩哔哩_bilibili','')
play_info=json.loads(re.findall(r'window.__playinfo__=([\s\S]+?)</script>',res)[0])
audio=play_info['data']['dash']['audio'][0]['backupUrl'][0]
video=play_info['data']['dash']['video'][0]['backupUrl'][0]
return [title,video,audio]
def save(url):
json_data=get_json_url(url=url)
title=json_data[0]
video_content=get_url(url=json_data[1]).content
audio_content=get_url(url=json_data[2]).content
with open (f'{title}.mp4','wb')as f:
f.write(video_content)
with open (f'{title}.mp3','wb')as f:
f.write(audio_content)
def start(bv):
print('开始下载')
url=f'https://bilibili.com/video/{bv}'
save(url)
print('下载完成')
#start('BV1hp4y1U7Ao')##这个参数错误
start('BV1mX4y1U7K2')
你的正则没有提取到数据
re.findall 返回了一个空列表
抱歉,根据提供的参考资料和问题描述,并没有提供出错的具体信息和代码,无法准确指出哪里出错。建议提供具体的出错信息和代码,或者提供更多相关信息,以便更好地解决问题。