ecl*_*ark 1 xml r form-submit dplyr rvest
我正在尝试从需要提交表单的网站上抓取结果,为此,我正在使用rvest软件包。
运行以下命令后,代码将失败:
require("rvest")
require(dplyr)
require(XML)
BasicURL <- "http://www.blm.mx/es/tiendas.php"
QForm <- html_form(read_html(BasicURL))[[1]]
Values <- set_values(QForm, txt_5 = 11850, drp_1="-1")
Session <- html_session(BasicURL)
submit_form(session = Session,form = Values)
错误:找不到可能的提交目标。
我认为可能是因为rvest找不到要提交的标准按钮目标。是否有必要指定要寻找的标签或按钮?
任何帮助,不胜感激
您可以POST直接使用httr以下表格:
library(httr)
library(rvest)
library(purrr)
library(dplyr)
res <- POST("http://www.blm.mx/es/tiendas.php",
            body = list(txt_5 = "11850", 
                        drp_1 = "-1"), 
            encode = "form")
pg <- read_html(content(res, as="text", encoding="UTF-8"))
map(html_nodes(pg, xpath=".//div[@class='tiendas_resultado_right']"), ~html_nodes(., xpath=".//text()")) %>% 
  map_df(function(x) {
    map(seq(1, length(x), 2), ~paste0(x[.:(.+1)], collapse="")) %>% 
      trimws() %>% 
      as.list() %>% 
      setNames(sprintf("x%d", 1:length(.)))
  }) -> right
left <- html_nodes(pg, "div.tiendas_resultado_left") %>%  html_text()
df <- bind_cols(data_frame(x0=left), right)
glimpse(df)
## Observations: 7
## Variables: 6
## $ x0 <chr> "ABARROTES LA GUADALUPANA", "CASA ARIES", "COMERCIO RED QIUBO", "FERROCARRIL 4", "LA FLOR DE JALISCO", "LA MIGAJA", "VIA LACTEA"
## $ x1 <chr> "Calle IGNACIO ESTEVA", "Calle PARQUE LIRA", "Calle GENERAL JOSE MORAN No 74 LOCAL B", "Calle MELCHOR MUZQUIZ", "Calle MELCHOR M...
## $ x2 <chr> "Col. San Miguel Chapultepec I Sección", "Col. San Miguel Chapultepec I Sección", "Col. San Miguel Chapultepec I Sección", "Col....
## $ x3 <chr> "Municipio/Ciudad Miguel Hidalgo", "Municipio/Ciudad Miguel Hidalgo", "Municipio/Ciudad Miguel Hidalgo", "Municipio/Ciudad Migue...
## $ x4 <chr> "CP 11850", "CP 11850", "CP 11850", "CP 11850", "CP 11850", "CP 11850", "CP 11850"
## $ x5 <chr> "Estado Distrito Federal", "Estado Distrito Federal", "Estado Distrito Federal", "Estado Distrito Federal", "Estado Distrito Fed...