使用cURL和请求库的BLS API数据?

时间:2013-08-21 19:25:35

标签: python python-requests

所有,我正在尝试实现curl请求以从BLS获取数据。按照他们的示例here(他们显示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”,“responseTime”:0,“message”:[“抱歉,一个   发生内部错误。请检查输入参数并尝试   你的请求。“],”结果“:null}

任何人都必须处理BLS api和python? 请求库是最好的吗?

1 个答案:

答案 0 :(得分:3)

您需要将数据作为json发送,而不是将其作为params dict传递。 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