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

如何在Python requests.get请求中添加time-cond参数实现条件下载?

如何用Python的requests实现curl的--time-cond(-z)功能?

你之前的错误在于把--time-cond当成了URL参数,但实际上curl的-z/--time-cond对应的是HTTP条件请求头,并非URL里的查询参数。

原理说明

当使用curl -z "Jan 12, 2022" URL时,curl会自动将该日期转换为标准HTTP日期格式,并发送If-Modified-Since请求头——告知服务器:仅当资源在指定时间之后修改过,才返回完整内容;否则返回304 Not Modified,不下载资源。

正确的requests实现代码

首先需要把目标日期转换成RFC 1123标准格式(例如"Wed, 12 Jan 2022 00:00:00 GMT"),然后通过headers参数传递给requests:

import requests

# 目标请求URL
url = 'https://registry.verra.org/mymodule/ProjectDoc/Project_ViewFile.asp?FileID=11032&IDKEY=dkjalskjf098234kj28098sfkjlf098098kl32lasjdflkj909j15213128'
# 设置HTTP条件请求头
headers = {
    'If-Modified-Since': 'Wed, 12 Jan 2022 00:00:00 GMT'
}

response = requests.get(url, headers=headers)

# 根据响应状态码处理结果
if response.status_code == 200:
    # 资源在指定时间后有更新,保存内容
    with open('project_file', 'wb') as f:
        f.write(response.content)
elif response.status_code == 304:
    # 资源未修改,无需下载
    print("资源未更新,无需下载")

补充说明

  1. 日期格式必须严格符合HTTP标准,可借助Python的datetime模块自动转换:
from datetime import datetime
import pytz

# 将本地日期转换为GMT时区的RFC1123格式
target_dt = datetime(2022, 1, 12, tzinfo=pytz.utc)
http_date_str = target_dt.strftime('%a, %d %b %Y %H:%M:%S GMT')
# 输出结果:'Wed, 12 Jan 2022 00:00:00 GMT'
  1. 若需求为“仅当资源在指定时间之前修改过才下载”,则需使用If-Unmodified-Since请求头,对应curl的-z "<date"语法。
  2. 该功能生效的前提是服务器支持HTTP条件请求(大部分规范的服务端都支持)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 16:30:46