我试图从一个网站收集一些链接。
例如,我有以下内容,我的想法是收集上面写着leer más的链接,这是我获取xpath的地方。
url = "https://www.fotocasa.es/es/alquiler/viviendas/madrid-capital/todas-las-zonas/l/181"
x <- GET(url, add_headers('user-agent' = desktop_agents[sample(1:10, 1)]))
x %>%
read_html() %>%
html_nodes(xpath = '//*[@id="App"]/div[2]/div[1]/main/div/div[3]/section/article[1]/div/a/p/span[2]')这给了我以下的链接,但没有提供链接:
{xml_nodeset (1)}
[1] <span class="re-CardDescription-link">Leer más</span>此外,我还想收集所有链接:
x %>%
read_html() %>%
html_nodes("a") %>%
html_attr("href")这给了我很多的链接,但不是我想要的个人网页的链接。
我想要一份链接清单,例如:
https://www.fotocasa.es/es/alquiler/vivienda/madrid-capital/aire-acondicionado-calefaccion-terraza-trastero-ascensor-amueblado-internet/162262978/d
https://www.fotocasa.es/es/alquiler/vivienda/madrid-capital/aire-acondicionado-calefaccion-trastero-ascensor-amueblado/159750574/d
https://www.fotocasa.es/es/alquiler/vivienda/madrid-capital/aire-acondicionado-calefaccion-jardin-zona-comunitaria-ascensor-patio-amueblado-parking-television-internet-piscina/162259162/d发布于 2022-04-10 07:24:49
这些链接存储在JavaScript对象中的script标记中。您可以正则化定义该对象的字符串,执行一些反转义操作以使jsonlite能够解析,然后应用自定义函数仅提取json对象感兴趣的urls。
library(rvest)
library(jsonlite)
library(magrittr)
library(stringr)
library(purrr)
link <- 'https://www.fotocasa.es/es/alquiler/viviendas/madrid-capital/todas-las-zonas/l/181'
p <- read_html(url) %>% html_text()
s <- str_match(p, 'window\\.__INITIAL_PROPS__ = JSON\\.parse\\("(.*)".*?;')[,2]
data <- jsonlite::parse_json(gsub('\\\\\\"', '\\\"', gsub('\\\\"', '"', s)))
links <- purrr::map(data$initialSearch$result$realEstates, ~ .x$detail$`es-ES` %>% url_absolute(link))https://stackoverflow.com/questions/71809099
复制相似问题