rvest:没有名字的按钮(submit_form)

时间:2017-04-08 17:27:29

标签: r rvest

我的submit_form rvest没有名称的按钮有问题。在此site上搜索表单是为了过滤不同的商店,但提交请求的按钮没有任何名称,而submit_form正在尝试使用其他input作为按钮。

Submitting with 'distance'
Error in xml2::url_absolute(form$url, session$url) : 
  not compatible with STRSXP

我试图重命名按钮,但没有任何运气。你如何处理这样一个无名按钮?在文档中,我找不到任何关于使用xpath或任何其他方式的内容。谢谢你的帮助

library(rvest)
library(magrittr)
rm(list=ls())
url <- html_session("http://www.lidl.cz/cs/2868.htm")
search <- url %>% html_node(xpath='//*[@id="searchform"]') %>%
  html_form() %>% set_values("startingpoint-city"="Kolín", distance="400") 
#hledani$fields[[5]]$name<- "button"
url <- submit_form(url,search)

1 个答案:

答案 0 :(得分:0)

这是rvest 0.3.2版本的bug。具体来说, submit_form 调用 submit_request

submit_request <- function(form, submit = NULL) {
is_submit <- function(x) tolower(x$type) %in% c("submit", "image","button")
submits <- Filter(is_submit, form$fields)
...

如果 x $ type 是一个长度为0 的字符串,%in%函数的行为与预期的一样;简而言之,生成的布尔向量的大小小于原始的 form $ field 向量。

我写了这样的 submit_request

submit_request <- function(form, submit = NULL) { 
is_submit <- function(x) tolower(x$type) %in% c("submit", "image", "button") && length(x$type)>0
submits <- Filter(is_submit, form$fields)
...

我建议您从source code复制必要的功能并按上图所示进行修复,直到发布新的稳定版本为止。

最好的问候

CA