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

使用Python requests无需下载文件获取web资源大小的方法

Python不下载完整Web资源获取大小的方法

实现的核心逻辑是使用HTTP的HEAD请求替代常规GET请求:HEAD请求只会要求服务器返回响应头,不会返回实际的资源内容,只要服务器支持HEAD请求,我们从响应头的Content-Length字段就能直接拿到资源的字节大小,全程不会下载完整资源。

具体实现方式

方法1:使用Python标准库urllib(无需安装第三方依赖)

from urllib.request import Request, urlopen

def get_resource_size(url: str) -> int | None:
    req = Request(url, method='HEAD')
    try:
        with urlopen(req) as resp:
            return int(resp.headers.get('Content-Length', 0))
    except Exception:
        # 处理请求失败、服务器不支持HEAD等异常情况
        return None

方法2:使用第三方requests库(写法更简洁)

import requests

def get_resource_size(url: str) -> int | None:
    try:
        resp = requests.head(url, timeout=10)
        resp.raise_for_status()
        return int(resp.headers.get('Content-Length', 0))
    except Exception:
        return None

注意事项

  • 部分服务器未兼容HEAD请求,会返回405等错误状态码,这种情况下可以改为发送GET请求,但拿到响应头后直接中断连接,不要读取响应体内容,也能达到不下载完整资源的效果
  • 如果资源采用分块传输编码(响应头存在Transfer-Encoding: chunked),响应头不会包含Content-Length字段,这种场景下无法通过该方法拿到资源大小,只能下载完整内容后统计
  • 遇到需要鉴权的资源,在请求中带入对应的Cookie、Token等鉴权信息即可,逻辑和普通请求一致

内容的提问来源于stack exchange,提问作者i.k abolo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:36:03