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

如何使用requests或urllib.request仅请求下载指定字节数的数据

实现指定字节范围请求的方法

完全可以实现,你可以通过HTTP标准的Range请求头,指定需要获取的字节区间,只要目标服务器支持范围请求,就可以避免下载完整文件。

requests 实现示例

在get方法中传入自定义headers指定字节范围即可,支持范围请求的服务器会返回206状态码:

import requests

# 此处示例请求前2048字节(0-2047下标),你可以根据GIF第一帧实际大小调整范围
headers = {"Range": "bytes=0-2047"}
r = requests.get("https://cdn.discordapp.com/attachments/712243005519560736/908229068909068318/sample_1.gif", headers=headers)

if r.status_code == 206:
    # 拿到的content就是你指定范围的字节内容,可直接用于解析第一帧
    target_bytes = r.content
# 如果返回200状态码,说明服务器不支持范围请求,此时返回的是完整文件内容

urllib.request 实现示例

逻辑和requests版本一致,仅调用方式不同:

import urllib.request

url = "https://cdn.discordapp.com/attachments/712243005519560736/908229068909068318/sample_1.gif"
req = urllib.request.Request(url, headers={"Range": "bytes=0-2047"})

with urllib.request.urlopen(req) as resp:
    if resp.getcode() == 206:
        target_bytes = resp.read()

优化提示

如果想要更精准的只下载第一帧字节,可以先请求前10字节解析GIF文件头,获取全局颜色表长度、帧数据偏移量等信息后,计算出第一帧的结束字节位置,再调整Range头的结束数值,完全不会多下载冗余内容。

内容的提问来源于stack exchange,提问作者M.Craig

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:45:03