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_formwhen applied to a single element. It returns a list ofrvest_formobjects when applied to multiple elements or a document.html_form_set()returns anrvest_formobject.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) { # \dontrun{
resp <- html_form_submit(search)
read_html(resp)
} # }
