1

所有,我正在尝试实现一个 curl 请求以从 BLS 获取数据。按照他们的示例他们显示 curl 请求),我的代码如下所示:

import requests
headers = {'Content-type': 'application/json'}
params = {"seriesid":["LEU0254555900", "APU0000701111"],"startyear":"2002", "endyear":"2012"}
p = requests.post('http://api.bls.gov/publicAPI/v1/timeseries/data/', params = params,headers = headers)
print p.url
print p.content

我得到以下(错误)输出:

http://api.bls.gov/publicAPI/v1/timeseries/data/?seriesid=LEU0254555900&seriesid=APU0000701111&endyear=2012&startyear=2002

{"status":"REQUEST_FAILED","re​​sponseTime":0,"message":["抱歉,发生内部错误。请检查您的输入参数,然后重试您的请求。"],"Results":null}

有人必须处理 BLS api 和 python 吗?requests 库是最适合这个的吗?

4

1 回答 1

3

您需要将数据作为 json 发送,而不是作为paramsdict 传递。params设置 url 参数,这不是你想要的,你需要将它作为data.

这应该有效:

import requests
import json
headers = {'Content-type': 'application/json'}
data = json.dumps({"seriesid":["LEU0254555900", "APU0000701111"],"startyear":"2002", "endyear":"2012"})
p = requests.post('http://api.bls.gov/publicAPI/v1/timeseries/data/', data=data, headers=headers)
print p.url
print p.content
于 2013-08-21T19:39:01.227 回答