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

如何为requests.get命令传递日期参数以获取API天气数据?

把curl命令转成requests.get调用的解决方案

我来帮你把这个curl命令转换成Python的requests调用,搞定日期参数传递和认证的问题~

首先先拆解下你原来的curl命令里的关键部分:

  • -G 参数是告诉curl把-d后面的参数拼成URL的查询字符串(也就是GET请求的参数),而不是用POST方式发送
  • -d start="2018-04-01" -d end="2018-04-04" 就是你要传递的日期范围参数
  • --user abcd:1234 是Basic HTTP认证,curl会自动把这个转换成Authorization请求头

对应到requests.get里,我们只需要把这些部分对应好就行,直接上代码:

import requests

# 目标API地址,对应curl里的"http://url.com/lat/long"
api_url = "http://url.com/lat/long"

# 日期参数,对应curl里的-d参数,因为用了-G,所以这里要放到params里
date_params = {
    "start": "2018-04-01",
    "end": "2018-04-04"
}

# Basic认证信息,对应curl里的--user参数,直接传(用户名, 密码)元组就行,requests会自动处理认证头
auth_credentials = ("abcd", "1234")

# 发送GET请求
try:
    response = requests.get(api_url, params=date_params, auth=auth_credentials)
    # 检查请求是否成功(如果HTTP状态码不是200系列会抛出异常)
    response.raise_for_status()
    # 假设返回的是JSON数据,解析出来
    historical_weather = response.json()
    print("获取到历史天气数据:", historical_weather)
except requests.exceptions.RequestException as e:
    print(f"请求失败啦:{e}")

关键对应点说明:

  • 你原来的curl用了-G,所以不能把日期参数放到data里(那会变成POST请求),必须用params参数,requests会自动把字典拼到URL后面,和-G的效果一致
  • auth参数直接传元组比手动构造Authorization头方便多了,requests会帮你处理编码的问题
  • 如果你的API返回的不是JSON,也可以用response.text获取文本内容,或者response.content获取二进制数据

这样替换掉原来的subprocess调用curl的方式,不仅更Pythonic,也更容易处理响应数据和错误哦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:27:14