使用python从网站下载视频



我正在尝试从网站下载视频,但我无法下载视频。我无法下载视频。我没有看到任何错误,但也没有看到下载的视频。我不确定我的代码有什么问题。非常感谢任何帮助。提前谢谢你。

下面的代码:

try:
import urllib.request as urllib2
except ImportError:
import urllib2
dwn_link = 'https://www1.wdr.de/fernsehen/lokalzeit/ostwestfalen/videos/video-lokalzeit-owl---1304.html'
file_name = '_video.mp4' 
rsp = urllib2.urlopen(dwn_link)
with open(file_name,'wb') as f:
f.write(rsp.read())

结果中有一个Javascript对象保存mp4和m3u8链接,其格式如下:

<script type="text/javascript">
globalObject.gseaInlineMediaData["something"] =
{
"mediaVersion": "1.4.0",
"mediaType": "vod",
"mediaResource": {
"dflt": {
"videoURL": "//some_file.m3u8",
"mediaFormat": "hls"
},
"alt": {
"videoURL": "//some_file.mp4", <======== HERE
"mediaFormat": "mp4"
},
"previewImage": "//some_file.jpg"
},
....
};
</script>

你可以像这样直接抓取mp4文件:

import requests
import re
import json
r = requests.get("https://www1.wdr.de/fernsehen/lokalzeit/ostwestfalen/videos/video-pausenbrot-prozess-mit-gutachten-zum-angeklagten-100.html")
res = re.search(r"globalObject.gseaInlineMediaData.*s*=s*(.*)s*;s*</script>", r.text, re.DOTALL)
data = json.loads(res.group(1))
video_url = f'https:{data["mediaResource"]["alt"]["videoURL"]}'
print(video_url)
r = requests.get(video_url, stream = True) 
with open("video.mp4", 'wb') as f: 
for chunk in r.iter_content(chunk_size = 1024*1024): 
if chunk: 
f.write(chunk)

如果您有一个视频链接,其中alt对象中不可用mp4,您可以使用ffmpeg从m3u8获取文件:

ffmpeg  -protocol_whitelist "file,http,https,tcp,tls" -i  something.m3u8 file.mp4

最新更新