Necesito llenar los tres campos del formulario en esta página para raspar los registros de la búsqueda resultante, sin embargo, no he logrado cambiar los valores a apartamento, compra usado y Medellín (Antioquia), respectivamente. Tenga en cuenta que el primer campo es como una lista desplegable con opciones de casilla de verificación y el tercero es una entrada de texto, pero debe seleccionar una de las opciones que se muestran para obtener los resultados correctos en la búsqueda. Estoy usando el paquete Rselenium en R, pero creo que podría ser más fácil usar javascript nativo con RSelenium. También estoy abierto a sugerencias en python o cualquier otro idioma.
script <- " document.querySelector('[class = \"m2-select__single-value css-1uccc91-singleValue\"]').textContent='Compra usado'; document.querySelector('[name = \"businessType\"]').setAttribute('value', 'venta/usado'); document.getElementsByClassName('form-control')[0].setAttribute('value', 'Medellín (Antioquia)'); " remDr$executeScript(script) inmueble <- remDr$findElements(using = 'css', '#propertyTypes .css-1hwfws3') inmueble$sendKeysToElement(list("Casas")) ciudad <- remDr$findElement(using = 'css', '.form-control') ciudad$sendKeysToElement(list("Medellín (Antioquia)")) buscar_boton <- remDr$findElement(using = 'css', '#btnSearch') buscar_boton$sendKeysToElement(list(key = 'enter'))EDITAR: Agregué el código que tengo hasta ahora, cambia los valores en el html pero cuando hago clic en Intro, realiza la búsqueda con los valores predeterminados.
Puede usar httr y realizar la misma solicitud de búsqueda que la página web. Debe recoger una clave API en el camino desde uno de los archivos JavaScript:
library(httr) library(stringr) library(magrittr) params <- list( "realEstateBusinessList" = "venta", "realEstateStatusList" = "usado", "locationsList" = "Medellín (Antioquia)", "realEstateTypeList" = "apartamento", "from" = "0", "size" = "50" ) key <- httr::GET("https://www.metrocuadrado.com/results/_next/static/chunks/commons.3c50d9b2b91c3e061be4.js") %>% content(as = "text") %>% stringr::str_match(., '"X-Api-Key":"(.*?)"') %>% .[, 2] headers <- c( "user-agent" = "Mozilla/5.0", "accept" = "application/json, text/plain, */*", "x-api-key" = key ) r <- httr::GET(url = "https://www.metrocuadrado.com/rest-search/search", httr::add_headers(.headers = headers), query = params) %>% content() r$results