Use html_form()
to extract a form, set values with html_form_set()
,
and submit it with html_form_submit()
.
Arguments
- x
A document (from
read_html()
), node set (fromhtml_elements()
), node (fromhtml_element()
), or session (fromsession()
).- base_url
Base url of underlying HTML document. The default,
NULL
, uses the url of the HTML document underlyingx
.- form
A form
- ...
<
dynamic-dots
> Name-value pairs giving fields to modify.Provide a character vector to set multiple checkboxes in a set or select multiple values from a multi-select.
- submit
Which button should be used to submit the form?
NULL
, the default, uses the first button.A string selects a button by its name.
A number selects a button using its relative position.
Value
html_form()
returns as S3 object with classrvest_form
when applied to a single element. It returns a list ofrvest_form
objects when applied to multiple elements or a document.html_form_set()
returns anrvest_form
object.html_form_submit()
submits the form, returning an httr response which can be parsed withread_html()
.
See also
HTML 4.01 form specification: https://www.w3.org/TR/html401/interact/forms.html
Examples
html <- read_html("http://www.google.com")
search <- html_form(html)[[1]]
search <- search %>% html_form_set(q = "My little pony", hl = "fr")
#> Warning: Setting value of hidden field "hl".
# Or if you have a list of values, use !!!
vals <- list(q = "web scraping", hl = "en")
search <- search %>% html_form_set(!!!vals)
#> Warning: Setting value of hidden field "hl".
# To submit and get result:
if (FALSE) {
resp <- html_form_submit(search)
read_html(resp)
}