R:网络抓取具有相同 URL 的多个表时出错

R: Errors when webscraping across mulitple tables with same URL

我对网络抓取还很陌生,在对我的代码进行故障排除时遇到了问题。目前,我每次都会遇到不同的错误,并且真的不知道从哪里继续。目前正在研究使用 RSelenium,但非常感谢对以下代码的一些建议和反馈。

我的初始代码基于以下内容:

library(xml2)
library(RCurl)
library(dplyr)
library(rvest)

i=1
table = list()
for (i in 1:15) {
  data=("https://www.forsvarsbygg.no/no/salg-av-eiendom/solgte-eiendommer/","?page=",i))
  page <- read_html(data)
  table1 <- page %>%
    html_nodes(xpath = "(//table)[2]") %>%
    html_table(header=T)
  i=i+1
  table1[[1]][[7]]=as.integer(gsub(",", "",table1[[1]][[7]]))
  table=bind_rows(table, table1)
  print(i)}

table$`ÅR`=as.Date(table$`ÅR`,format ="%Y")

下面是我目前收到的错误。我知道很多,但我认为其中一些是以前错误的结果。任何帮助将不胜感激!

我=1

table = list() for (i in 1:15) {

错误:意外的“,”在: “对于(我在1:15){ data=("https://www.forsvarsbygg.no/no/salg-av-eiendom/solgte-eiendommer/","

page <- read_html(data)

UseMethod("read_xml") 错误: 没有适用于 'read_xml' 的方法应用于 class“函数”

的对象

table1 <- page %>%

UseMethod("xml_find_all") 错误: 没有适用于 'xml_find_all' 的方法应用于 class“函数”

的对象

i=i+1 table1[[1]][[7]]=as.integer(gsub(",", "",table1[[1]][[7]]))

is.factor(x) 中出错:找不到对象 'table1'

table=bind_rows(table, table1)

list2(...) 错误:未找到对象 'table1'

print(i)}

错误:“print(i)}”中出现意外的“}”

table$ÃR=as.Date(table$ÃR,format ="%Y")

以下代码生成一个数据框,其中包含您要查找的所有数据。下面的代码没有使用 RSelenium,而是直接从站点填充 table 的同一个 API 获取数据,因此您不需要合并多个页面:

library(tidyverse)
library(rvest)
library(jsonlite)

####GET NUMBER OF ITEMS#####

url <- "https://www.forsvarsbygg.no/ListApi/ListContent/78635/SoldEstates/0/10/"

data <- jsonlite::fromJSON(url, flatten = TRUE)

totalItems <- data$TotalNumberOfItems

####GET ALL OF THE ITEMS#####

allData <- paste0('https://www.forsvarsbygg.no/ListApi/ListContent/78635/SoldEstates/0/', totalItems,'/') %>%
  jsonlite::fromJSON(., flatten = TRUE) %>%
  .[1] %>%
  as.data.frame() %>%
  rename_with(~str_replace(., "ListItems.", ""), everything())