我开始使用BLS的API来检索R中的一些失业数据。但是,由于我对API没有经验,我无法检索超过31的列表(从2014年7月到2012年1月)有1978年的数据(虽然我在这里读到:http://www.datascienceriot.com/?p=53只有最多10年是可能的,即使这样我似乎无法得到)。
有人可以帮帮我吗?包括以下代码。提前谢谢。
罗伯特
码
bls.content <- getURLContent("http://api.bls.gov/publicAPI/v1/timeseries/data/LASST010000000000003")
bls.json <- fromJSON(bls.content, simplify=TRUE)
tmp <-bls.json$Results[[1]][[1]]
bls.df <- data.frame(year=sapply(tmp$data,"[[","year"),
period=sapply(tmp$data,"[[","period"),
periodName=sapply(tmp$data,"[[","periodName"),
value=as.numeric(sapply(tmp$data,"[[","value")),
stringsAsFactors=FALSE)
答案 0 :(得分:0)
(这不是一个有效的答案,但它应该让你走上正轨或可能让其他人告诉httr
POST
电话有什么问题)
使用httr
库,你应该能够翻译:这个curl命令行:
curl -v -i -X POST -H 'Content-Type: application/json' \
-d '{ "seriesid":["LASST010000000000003"], "startyear":"2004", "endyear":"2014" }' \
http://api.bls.gov/publicAPI/v1/timeseries/data/
(来自this doc)
成:
POST("http://api.bls.gov/publicAPI/v1/timeseries/data/",
content_type_json(),
body=sprintf('{ "seriesid":"%s", "startyear":"%s", "endyear":"%s" }', "LEU0254555900", 2005, 2012),
verbose())
与命令行(获取所有数据)不同,httr
POST
给出:
-> POST /publicAPI/v1/timeseries/data/ HTTP/1.1
-> User-Agent: curl/7.30.0 Rcurl/1.95.4.3 httr/0.5
-> Host: api.bls.gov
-> Accept-Encoding: gzip
-> Cookie: JSESSIONID=FD2EAE55DE9288D89B54B00030E8B68C.tc_instance8
-> accept: application/json, text/xml, */*
-> Content-Length: 68
->
>> { "seriesid":"LEU0254555900", "startyear":"2005", "endyear":"2012" }
<- HTTP/1.1 415 Unsupported Media Type
<- Date: Mon, 08 Sep 2014 15:48:27 GMT
<- Content-Type: text/html;charset=utf-8
<- Content-Length: 1047
但是,它们应该几乎相同(我也使用了各种accept()
标题更改。)
body=
中POST
的列表格式不起作用,因为JSON不符合BLS API期望的格式(AFAICanTell)。