您收到的错误消息与单选按钮无关,而与您试图提交的表单缺少
submit
按钮
rvest
尝试提交表单时需要。
作为示例的解决方法,您可以更改字段的字段类型
returnTo
到
提交
并将其值设置为页面本身的URL,如下所示:
pgform$fields[['returnTo']]$type = 'submit'
pgform$fields[['returnTo']]$value = url
然后您可以按预期设置语言选项,例如
filledform <- set_values(pgform, filterLang = 'it')
或
filledform <- set_values(pgform, filterLang = 'ALL')
应分别将语言过滤器设置为意大利语或所有语言。
如前所述
here
,当你这样做的时候
url <- 'https://www.tripadvisor.com/Restaurant_Review-g187438-d12699400-Reviews-Trattoria_Mamma_Franca-Malaga_Costa_del_Sol_Province_of_Malaga_Andalucia.html'
session <- html_session(url)
pgform <- html_form(session)[[3]]
pgform$fields[['returnTo']]$type = 'submit'
pgform$fields[['returnTo']]$value = url
filledform <- set_values(pgform, filterLang = 'ALL')
result <- submit_form(session, filledform)
您宁愿得到整个页面,而只得到使用以下代码的内容
url <- 'https://www.tripadvisor.com/Restaurant_Review-g187438-d12699400-Reviews-Trattoria_Mamma_Franca-Malaga_Costa_del_Sol_Province_of_Malaga_Andalucia.html'
session <- html_session(url)
pgform <- html_form(session)[[3]]
pgform$fields[['returnTo']]$type = 'submit'
pgform$fields[['returnTo']]$value = url
filledform <- set_values(pgform, filterLang = 'ALL')
result <- submit_form(session, filledform, submit = NULL, httr::add_headers('x-requested-with' = 'XMLHttpRequest'))
因为你正试图与一个相当复杂的网站进行交互,而这个网站大量使用了javascript和
XMLHttpRequest
你最好从
紧身衣
更好地支持此类技术的方法,例如
RSelenium
.