我试图从API来源获取过去的天气数据。但是,我遇到了如何传递日期参数和指定我试图获取数据的日期的问题。我已成功使用curl GET命令,但未成功将其转换为requests.get命令。
以下是有效的:
curl -X GET -G "http://url.com/lat/long" -d start="2018-04-01" -d end="2018-04-04" --user abcd:1234
使用子进程命令我已经得到了该代码。以下是代码:
cmd = 'curl -X GET -G "http://url.com/lat/long" -d start="2018-04-01" -d end="2018-04-04" --user abcd:1234'
p = sp.Popen(cmd, shell=True,stdout=sp.PIPE, stderr=sp.STDOUT).stdout.read()
p.split('\n')[3]
这是我对requests.get:
的代码r=requests.get("https://url.com/lat/long",auth=HTTPBasicAuth('user','password'))
但是,无法通过日期参数来限制我的数据拉到我指定的日期范围。
这是我尝试过的几种方法。
r=requests.get("https://url.com/lat/long",start=start,end=end,auth=HTTPBasicAuth('user','password'))
也尝试过:
data = [
('startDate', '2018-04-01'),
('endDate', '2018-04-08'),
]
r=requests.get("https://url.com/lat/long",data=data,auth=HTTPBasicAuth('user','password'))
有人可以指导我朝正确的方向发展吗?我真的想坚持使用请求库命令,但只有现在正在运行的东西是通过子进程方法运行curl命令,而我并不完全理解这个过程。
答案 0 :(得分:0)
试
data = {
'start': '2018-04-01',
'end': '2018-04-08'
}
答案 1 :(得分:0)
让我们看一下G
命令中的curl
参数:
-G, --get Put the post data in the URL and use GET
这意味着您的数据不会在请求正文中提交,而是在url中作为查询字符串提交。使用requests
,您可以使用params
参数来实现此目的。
所以你的curl
命令相当于:
import requests
url = 'https://url.com/lat/long'
data = {'start': '2018-04-01', 'end': '2018-04-08'}
creds = ('user','password')
r = requests.get(url, params=data, auth=creds)
print(r.text)