【问题标题】:Using submit_form in rvest在 rvest 中使用 submit_form
【发布时间】:2017-07-03 12:50:43
【问题描述】:

我试图从网站上抓取数据。下面是我正在使用的脚本的简化版本。在本例中,最后一行 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)

【问题讨论】:

    标签: r web-scraping rvest


    【解决方案1】:

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

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

    无需进行其他更改。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-05
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多