在rvest中使用submit_form

时间:2017-07-03 12:50:43

标签: r web-scraping rvest

我试图抓一个网站获取数据。下面是我正在使用的脚本的简化版本。在此示例中,最后一行中由html_table检索的 disease.table 应包括2014年至2017年的所有年份。目前,它仅包含2017年。

# Initiate wahis.session website session.
url <- "http://www.oie.int/wahis_2/public/wahid.php/Diseaseinformation/statusdetail"
wahis.session <- html_session(url)

# Get forms with searchable fields in current session.
form <- html_form(wahis.session)

#------------------------------------------------------------------------------
# Fill out and submit forms

# First, Copy form.
filled.form <- form

# Set values in form #3
filled.form[[3]] <- set_values(filled.form[[3]],
                               selected_start_year = "2014") # start year
# Set form url to empty character string to prevent error message when
# submitting.
filled.form[[3]]$url <- ""

# Submit form #3
submit_form(session = wahis.session,
        form = filled.form[[3]],
        submit = 'disease_id_terrestrial')

#------------------------------------------------------------------------------
# Retreive data

# Find data table
disease.table <- wahis.session %>%
  html_node("div.OverflowAutoScroll table.TableFoyers") %>%
  html_table(fill = TRUE)

1 个答案:

答案 0 :(得分:1)

我找到了答案。 submit_form()函数需要应用于活动的html会话。使用以下代码提交表单:

# Submit form #3
wahis.session <- submit_form(session = wahis.session,
        form = filled.form[[3]],
        submit = 'disease_id_terrestrial'

不需要进行任何其他更改。