这是基于此问题的,但是在执行步骤时遇到了问题。
Using submit_form() from rvest package returns a form which is not updated
以下是提取的代码:
# Load Packages
library(rvest)
# Specify URL
url <- "http://www.cocorahs.org/ViewData/ListDailyPrecipReports.aspx"
cocorahs <- html_session(url)
# Grab Initial Form
# Form is filled in stages. Here, only do country and date
form.unfilled <- cocorahs %>% html_node("form") %>% html_form()
form.filled <- form.unfilled %>%
set_values("frmPrecipReportSearch:ucStationTextFieldsFilter:tbTextFieldValue" = "840",
"frmPrecipReportSearch_ucDateRangeFilter_dcStartDate" = "6/15/2016",
"frmPrecipReportSearch_ucDateRangeFilter_dcEndDate" = "6/15/2016")
# submit the form and save as a new session
session <- submit_form(cocorahs, form.filled)
# look for a table in the nodes
table <- session %>% html_nodes("table")
# The table you want
table[[7]] %>% html_table()
但是,问题出在submit_form()
函数应该提交了表单之后,该会话没有更新,仍然仅包含默认的最新记录。
此外,在浏览器的开发工具中选中的内容和网页上的“提交”按钮也具有这些属性。
<input type="submit" name="frmPrecipReportSearch:btnSearch" value="Search" id="frmPrecipReportSearch_btnSearch">
将submit
参数保留为默认值,submit_form()
函数使用名称'frmPrecipReportSearch_ucDateRangeFilter_dcEndDate'
,该名称似乎来自网页上的无关项,但是当我指定{{1 }}参数作为属性中的submit
或name
,发生错误。
那么如何在R中模拟浏览行为,例如提交表单?