You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python下载网页视频无报错无输出文件问题求助

问题原因

  • 你当前代码请求的dwn_link是视频播放网页的HTML地址,不是视频文件的直链,你写入_video.mp4的内容本质是网页源码,并非视频流数据,所以自然无法正常作为视频打开。
  • 你找不到文件是因为文件默认保存在Python脚本运行的当前工作目录下,你可以在代码开头加入以下代码打印工作目录,到对应路径下就能找到生成的文件:
import os
print(os.getcwd())

你也可以直接给file_name写绝对路径,比如C:/users/xxx/desktop/_video.mp4,就能直接存到指定位置。

修复方案

第一步:提取真实视频直链

你需要先解析请求得到的HTML源码,从中提取真实的视频资源地址:

  1. 常规视频站的真实地址会存放在页面<video>标签的src属性中,部分站点会把地址存在内嵌的JS变量里,你可以打开网页按F12查看元素搜索<video>标签确认。
  2. 解析HTML推荐使用BeautifulSoup库,需要提前安装:pip install beautifulsoup4

第二步:添加反爬请求头

大部分站点会拦截无UA标识的请求,你需要构造带User-Agent的请求对象再发送,避免被反爬拦截返回无效数据。

修改后示例代码

try:
    import urllib.request as urllib2
except ImportError:
    import urllib2
from bs4 import BeautifulSoup
import os

# 打印工作目录确认存储位置
print("文件将保存在:", os.getcwd())

# 构造带UA的请求
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
}
page_url = 'https://www1.wdr.de/fernsehen/lokalzeit/ostwestfalen/videos/video-lokalzeit-owl---1304.html'
req = urllib2.Request(page_url, headers=headers)

# 请求页面解析视频直链
page_rsp = urllib2.urlopen(req)
html = page_rsp.read()
soup = BeautifulSoup(html, 'html.parser')
video_tag = soup.find('video')
if not video_tag:
    raise Exception("未找到视频标签,视频地址可能存在于JS中,需要调整解析逻辑")
video_url = video_tag['src']
# 部分站点的src是相对地址,需要拼接域名前缀,这里根据实际情况调整
if video_url.startswith('/'):
    video_url = 'https://www1.wdr.de' + video_url

# 请求视频流保存
video_req = urllib2.Request(video_url, headers=headers)
video_rsp = urllib2.urlopen(video_req)
file_name = '_video.mp4'
with open(file_name, 'wb') as f:
    f.write(video_rsp.read())
print("视频下载完成")

额外注意

如果页面没有直接暴露<video>标签的src,说明站点做了视频地址加密或者动态加载,你需要抓包分析接口的请求逻辑,或者使用selenium等动态渲染工具拿到加载完成后的页面元素再解析。

内容的提问来源于stack exchange,提问作者KApril

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 09:24:04