I am trying to collect some links from a website in R. I want to collect just the following box of links in the footer.
Viviendas en venta en Artigues - Llefià
Viviendas en venta en Salut - Lloreda
Viviendas en venta en Gorg - Progrés
Viviendas en venta en Bonavista - Bufalà - Morera
Viviendas en venta en Montigalà - Sant Crist
Viviendas en venta en Centre Badalona
Viviendas en venta en Port
Viviendas en venta en Canyet - Pomar
Viviendas en venta en Casagemes - Canyadó
I can run the following:
library(rvest)
webpage = "https://www.fotocasa.es/es/comprar/viviendas/badalona/todas-las-zonas/l" %>%
read_html()
webpage %>%
html_nodes(".re-SharedSeoFooter-layout.re-SharedSeoFooter-layout--column") %>%
html_nodes(".re-SharedSeoFooter-nav")
But I only want the items for "Viviendas en Badalona" and not the others. Preferably I would like to filter the 3 columns in the footer to something like contains("Viviendas en")
Running:
webpage %>%
html_nodes(".re-SharedSeoFooter-layout.re-SharedSeoFooter-layout--column") %>%
html_nodes(".re-SharedSeoFooter-nav") %>%
#html_nodes(".sui-MoleculeCollapsible") %>%
html_nodes(".sui-ListLink") %>%
html_nodes(".sui-ListLink-item") %>%
html_nodes(".sui-LinkBasic")
Gives me all items but I cannot differentiate between the 3 columns in the footer:
Encuentra más inmuebles en Badalona
, Viviendas cerca de Badalona
and Viviendas en Badalona
.
Any help on how I can split the 3 types of data up would be great. If I can scrape it like the following:
contains("Encuentra más inmuebles en")
contains("Viviendas cerca de")
contains("Viviendas en")
(Since the place name will change but not the base text).
CodePudding user response:
Is this what you wanted? These are the links for the stuff you listed
library(rvest)
library(tidyverse)
tibble(
locations = "https://www.fotocasa.es/es/comprar/viviendas/badalona/todas-las-zonas/l" %>%
read_html() %>%
html_elements(".re-SharedSeoFooter-layout--column~ .re-SharedSeoFooter-layout--column .re-SharedSeoFooter-layout--column .sui-LinkBasic") %>%
html_text2(),
links = "https://www.fotocasa.es/es/comprar/viviendas/badalona/todas-las-zonas/l" %>%
read_html() %>%
html_elements(".re-SharedSeoFooter-layout--column~ .re-SharedSeoFooter-layout--column .re-SharedSeoFooter-layout--column .sui-LinkBasic") %>%
html_attr("href") %>%
paste0("https://www.fotocasa.es/", .)
)
# A tibble: 9 x 2
locations links
<chr> <chr>
1 Viviendas en venta en Artigues - Llefià https://www.fotocasa.es//es/c~
2 Viviendas en venta en Salut - Lloreda https://www.fotocasa.es//es/c~
3 Viviendas en venta en Gorg - Progrés https://www.fotocasa.es//es/c~
4 Viviendas en venta en Bonavista - Bufalà - Morera https://www.fotocasa.es//es/c~
5 Viviendas en venta en Montigalà - Sant Crist https://www.fotocasa.es//es/c~
6 Viviendas en venta en Centre Badalona https://www.fotocasa.es//es/c~
7 Viviendas en venta en Port https://www.fotocasa.es//es/c~
8 Viviendas en venta en Canyet - Pomar https://www.fotocasa.es//es/c~
9 Viviendas en venta en Casagemes - Canyadó https://www.fotocasa.es//es/c~