1

すべて、BLS からデータを取得するための curl リクエストを実装しようとしています。こちらの例(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

paramsデータをdictとして渡すのではなく、jsonとして送信する必要があります。paramsurl パラメーターを設定しますが、これは必要なものではありません。 として渡す必要があります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 に答える