2017-04-24 66 views
2

我想从这个site中提取失业率数据。在表单中,有一个select标签有一些选项。我可以从默认的2007年到2017年提取表格。但是我很难为from_yearto_year设置一个值。这是我到目前为止的代码:rvest:选择一个选项并提交表格

session = html_session("https://data.bls.gov/timeseries/LNS14000000") 
form = read_html("https://data.bls.gov/timeseries/LNS14000000") %>% html_node("table form") %>% html_form() 
set_values(form, from_year = 2000, to_year = as.numeric(format(Sys.Date(), "%Y"))) # nothing happened if I set the value for years 
submit_form(session, form) 

它没有按预期工作。

+0

我不认为你可以做到这一点,而不使用'RSelenium'之类的东西。 这里的例子... https://stackoverflow.com/questions/43307090/how-to-select-dropdown-box-using-rselenium/43307980#43307980 但是,我注意到在这种情况下,bls有一个API,所以这可能是值得一看... https://www.bls.gov/developers/ –

回答

2

非常感谢@安德鲁!

我可以使用api来提取数据。

library(rjson) 
library(blsAPI) 

uer1 <- list(
    'seriesid'=c('LNS14000000'), 
    'startyear'=2000, 
    'endyear'=2009) 

response <- blsAPI(uer1, 2, TRUE) 

response样子:

year period periodName value seriesID 
1 2009 M12 December 9.9 LNS14000000 
2 2009 M11 November 9.9 LNS14000000 
3 2009 M10 October 10.0 LNS14000000 
4 2009 M09 September 9.8 LNS14000000 
5 2009 M08  August 9.6 LNS14000000 
6 2009 M07  July 9.5 LNS14000000 
... 

注意,有在API的一些查询限制。

api limits

+2

限制哪些受到尊重,而不是通过刮或通过代理刮板解决。 – hrbrmstr

+0

@hrbrmstr,完全同意! –

相关问题