我想自动收集房地产广告网站上的具体数据。我使用了包tidyverse和jsonlite作为起点。使用这些,我能够收集我感兴趣的东西在一定程度上。
让我们使用这个庄园网页:https://www.sreality.cz/hledani/prodej/byty
# Libraries -----------------------------------------------------------------------------------
library(jsonlite)
library(tidyverse)
# Web Page of Estates: https://www.sreality.cz/hledani/prodej/byty/praha
# Select one region
id = 10
A = paste0("https://www.sreality.cz/api/cs/v2/estates?category_main_cb=1&category_type_cb=1&locality_region_id=", id, "&page=")
B= paste("&per_page=40&tms=1583500044717")
C = paste0(A,1,B)
D = fromJSON(C)
Res <-
D$`_embedded`$estates %>%
mutate(D$`_embedded`$estates$hash_id) %>%
as_data_frame()
Res %>% view()通过这种方式,Res对象包含了价格等基本感兴趣的信息,也可以利用正则表达式获得房间数等信息。然而,也有一些信息是我被遗漏的,如Floor (Podlaží)、Type of ownership (Vlastnictví)等。
让抢掠一个皮毛产业
Res$hash_id[1]将返回房地产ID号码,然后我们可以谷歌此提供使用ID。
我们会找到以下一页:
在这里我们可以看到关于地板的信息(Podlaží:5. podlaží)可以使用。然而,在D对象中,没有关于地板(podlaží)的信息,也没有关于“Vlastnictví”的信息。我也希望能够搜集所有房地产的相关信息。有没有办法在R中做到这一点?
发布于 2020-11-10 15:34:48
需要额外的API调用才能获得所需的数据。每个hash_id的新URL是
https://www.sreality.cz/api/cs/v2/estates/<hash_id>?tms=<timestamp>考虑一下这个工作流
mas_url <- "https://www.sreality.cz"
get_links <- function(url, id, page) {
tmp <- paste0(
url,
"/api/cs/v2/estates?category_main_cb=1&category_type_cb=1&locality_region_id=", id,
"&page=", page,
"&per_page=40&tms=1583500044717"
)
links <- jsonlite::fromJSON(tmp)$`_embedded`$estates$hash_id
tms <- as.character(round(as.double(Sys.time())*1000))
paste0(url, "/api/cs/v2/estates/", links, "?tms=", tms)
}
# I only scraped three websites for test
res <- lapply(get_links(mas_url, 10, 1)[10:12], jsonlite::fromJSON)列表res中的每个元素对应于一个遗产。例如,您需要的信息可以在
res[[1L]]$items输出
negotiation name notes value currency type unit topped
1 FALSE Celková cena bez DPH 8 950 400 Kc price_czk za nemovitost NA
2 NA ID zakázky NULL D401 <NA> string <NA> NA
3 NA Aktualizace NULL Dnes <NA> edited <NA> TRUE
4 NA Stavba NULL Cihlová <NA> string <NA> NA
5 NA Stav objektu NULL Novostavba <NA> string <NA> NA
6 NA Vlastnictví NULL Osobní <NA> string <NA> NA
7 NA Umístení objektu NULL Centrum obce <NA> string <NA> NA
8 NA Podlaží NULL 4. podlaží z celkem 5 <NA> string <NA> NA
9 NA Užitná plocha NULL 77 <NA> area m2 NA
10 NA Plocha podlahová NULL 83 <NA> area m2 NA
11 NA Terasa NULL TRUE <NA> boolean <NA> NA
12 NA Sklep NULL TRUE <NA> boolean <NA> NA
13 NA Garáž NULL TRUE <NA> boolean <NA> NA
14 NA Datum nastehování NULL 30.01.2023 <NA> date <NA> NA
15 NA Datum zahájení prodeje NULL 01.08.2020 <NA> date <NA> NA
16 NA Výtah NULL TRUE <NA> boolean <NA> NAhttps://stackoverflow.com/questions/64769977
复制相似问题