如何使用硒填写反应性表格

2024-10-02 22:27:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在this page中填写表单的三个字段,以便刮取结果搜索的记录,但是,我还没有弄清楚如何分别将值更改为Apartmento、compra usado和Medellín(Antioquia)。请注意,第一个字段类似于带有复选框选项的下拉列表,第三个字段是文本输入,但您必须选择显示的选项之一才能在搜索中获得正确的结果。我在R中使用了Rselenium包,但我认为在Rselenium中使用本机javascript可能更容易。我也愿意接受python或任何其他语言的建议

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'))

编辑:添加了到目前为止的代码,它会更改html中的值,但当我单击enter时,它会使用默认值进行搜索


Tags: value选项scriptdocumentcsslistusingsetattribute
1条回答
网友
1楼 · 发布于 2024-10-02 22:27:56

您可以使用httr并发出与网页相同的搜索请求。您需要从以下其中一个JavaScript文件中提取API密钥:

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

相关问题 更多 >