R:使用Rvest循环遍历列表

时间:2018-02-19 10:48:02

标签: r web-scraping rvest

我试图从这个主页的所有单位(https://www.immobilienscout24.de/Suche/S-T/P-1/Wohnung-Miete/Sachsen/Dresden)中查看价格,地区和地址

使用Rvest和xpath获取一个列表元素的数据工作正常(请参阅代码),但我不知道如何获取每个列表元素的ID以遍历所有元素。

以下是html代码的一部分,其中包含循环所需的 data-go-to-expose-id 。我怎样才能获得所有ID?

<a href="/expose/103049161" data-go-to-expose-id="103049161" data-go-to-expose-referrer="RESULT_LIST_LISTING" class="slick-slide" data-slick-index="1" aria-hidden="true" style="width: 268px;"><span class="slick-bg-layer"></span><img alt="Immobilienbild" class="gallery__image block height-full" src="https://pictures.immobilienscout24.de/listings/541dfd45-c75a-4da7-a831-3339264d578b-1193970198.jpg/ORIG/legacy_thumbnail/532x399/format/jpg/quality/80"></a>a831-3339264d578b-1193970198.jpg/ORIG/legacy_thumbnail/532x399/format/jpg/quality/80"></a>

这是我当前的R代码,用于从一个列表元素中获取数据:

library(rvest)

url <- "https://www.immobilienscout24.de/Suche/S-T/P-1/Wohnung-Miete/Sachsen/Dresden"

address <- url %>% read_html(encoding = "UTF-8") %>% html_node(xpath = '//*[@id="result-103049161"]/div[2]/div[2]/div[1]/div[2]/div[2]/a') %>% html_text()
price <- url %>% read_html(encoding = "UTF-8") %>% html_node(xpath = '//*[@id="result-103049161"]/div[2]/div[2]/div[1]/div[3]/div/div[1]/dl[1]/dd') %>% html_text()
area <- url %>% read_html(encoding = "UTF-8") %>% html_node(xpath = '//*[@id="result-103049161"]/div[2]/div[2]/div[1]/div[3]/div/div[1]/dl[2]/dd') %>% html_text()

1 个答案:

答案 0 :(得分:1)

这是否能实现你的目标

library("tidyverse")
library("httr")
library("rvest")

url <- "https://www.immobilienscout24.de/Suche/S-T/P-1/Wohnung-Miete/Sachsen/Dresden"

x <- read_html(url)

x %>% 
  html_nodes("#listings") %>% 
  html_nodes(".result-list__listing") %>% 
  html_attr("data-id")