R 网页抓取多页问题

R 网页抓取多页问题,r,web-scraping,rvest,R,Web Scraping,Rvest,我正试图使用R代码从以下网站中刮取前4页,用于教育目的: {r} 图书馆(rvest) 图书馆(purrr) 图书馆(tidyverse) url\u base看看如果将sprintf(url\u base,2)的结果粘贴到浏览器中会发生什么,它会在表1中加载网站。所以我认为你不能用rvest刮取这些数据,你需要一个像RSelenium这样的包来刮取这些数据。使用RSelenium您可以访问网站,然后移动到第二个表等。页面使用javascript调用API,您可以访问JSON格式的数据,第一个

我正试图使用R代码从以下网站中刮取前4页,用于教育目的:

{r}
图书馆(rvest)
图书馆(purrr)
图书馆(tidyverse)

url\u base看看如果将
sprintf(url\u base,2)
的结果粘贴到浏览器中会发生什么,它会在表1中加载网站。所以我认为你不能用rvest刮取这些数据,你需要一个像
RSelenium
这样的包来刮取这些数据。使用
RSelenium
您可以访问网站,然后移动到第二个表等。

页面使用javascript调用API,您可以访问JSON格式的数据,第一个页面如下:
jsonlite::fromJSON("https://api.boliga.dk/api/v2/sold/search/results?searchTab=1&page=1&sort=date-d&zipcodeFrom=1000&zipcodeTo=2499&street=“)

要将所有4页放在一起,请尝试以下操作:

library(dplyr)
library(jsonlite)

url_base <- "https://api.boliga.dk/api/v2/sold/search/results?searchTab=1&page=%d&sort=date-d&zipcodeFrom=1000&zipcodeTo=2499&street="

Address_map <-lapply(1:4,function(i){
  print(i)
  # pause to prevent attacking the server
  Sys.sleep(2)
  #retrieve the results data frame from the returned data structure
  fromJSON(sprintf(url_base, i))$result
}) 

#bind everything together
answer <- bind_rows(Address_map)
库(dplyr)
图书馆(jsonlite)

url\u base感谢您的快速回复。我对R比较陌生,所以您知道这段代码在我的url中提取地址时会是什么样子吗?非常感谢您的快速回复。您能推荐如何在R中编写这段代码吗?我尝试了一些解决方案,但没有一个真正给出相关的结果。非常感谢您-这非常好。可以吗你可能会解释这个API到底是什么,以及为什么你的解决方案有效?只是出于好奇-我已经将你的解决方案标记为有效!下面是一个非常一般的解释。数据存储在服务器上的某个数据库中,而不存储在网页上。加载网页时,网页的脚本将通过ca查询数据库ll转换为“”…,数据作为JSON数据结构返回。因此,为了抓取网页,需要直接查询数据库,或者让请求像web浏览器一样运行javascript,例如,在另一个回答中提到的RSelenium。
library(dplyr)
library(jsonlite)

url_base <- "https://api.boliga.dk/api/v2/sold/search/results?searchTab=1&page=%d&sort=date-d&zipcodeFrom=1000&zipcodeTo=2499&street="

Address_map <-lapply(1:4,function(i){
  print(i)
  # pause to prevent attacking the server
  Sys.sleep(2)
  #retrieve the results data frame from the returned data structure
  fromJSON(sprintf(url_base, i))$result
}) 

#bind everything together
answer <- bind_rows(Address_map)