2017-04-24 80 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,完全同意! –

相關問題