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

如何从Pexels下载视频?Python下载代码生成3KB文件问题排查

Pexels视频下载代码错误原因及修复方案

错误原因

  • 你请求的是Pexels视频的详情页URL,而非视频文件的直接资源链接。该URL返回的是网页HTML代码,不是视频数据流,所以保存的文件实际是网页文本,大小仅几KB。
  • 代码存在语法错误:requests.get()返回的是Response对象,直接执行f.write(d)会抛出异常,正确写法应为写入d.content(响应的二进制内容),但这不是文件过小的核心原因。

修复方案

要下载视频,需先从详情页HTML中提取视频的真实下载链接。以下是可运行的修复代码:

步骤说明

  1. 请求视频详情页,获取网页HTML内容
  2. 解析HTML,提取不同分辨率的视频源链接
  3. 请求真实视频链接,保存视频文件

代码示例

import requests
from bs4 import BeautifulSoup

# 视频详情页地址
video_page_url = 'https://www.pexels.com/video/a-rocky-river-in-the-forest-5896379/'

# 模拟浏览器请求头,避免被拦截
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}

# 获取详情页HTML
page_response = requests.get(video_page_url, headers=headers)
soup = BeautifulSoup(page_response.text, 'html.parser')

# 提取视频真实下载链接
video_element = soup.find('video')
if video_element:
    # 获取所有分辨率的视频源
    video_sources = video_element.find_all('source')
    # 选择最高分辨率的视频(通常是最后一个源)
    target_video_url = video_sources[-1]['src']
    
    # 下载并保存视频
    video_response = requests.get(target_video_url, headers=headers)
    with open('test.mp4', 'wb') as f:
        f.write(video_response.content)
    print('视频下载完成')
else:
    print('未找到视频资源')

注意事项

  • 必须添加User-Agent请求头,模拟浏览器行为,否则可能被Pexels的反爬机制拦截。
  • Pexels的页面结构若发生变更,需调整HTML解析逻辑(比如修改元素查找的方式)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 21:52:19