R网站抓取困难-为什么我不能从多页网站上获得所有的标价?

问题描述

我一直在尝试使用R的rvest软件包从房地产网站中抓取数据。我尝试抓取挂牌价格的网站有15个页面,共有631个列表。但是,当我使用下面的脚本时,它的结果是一个数据框只有360个以上的值(它似乎从前9页开始列出价格,然后停下来)。另外,当我在第一次尝试后立即尝试使用完全相同的脚本时,它将用0值替换之前的数据帧。如果我等待30分钟并再次使用相同的代码,则会再次获得具有369个值的原始数据帧。我将在下面添加我的代码

library(rvest)
library(purrr)
library(httr)
library(stringr)

url <- "https://www.realtor.com/soldhomeprices/Boulder_CO/type-single-family-home,multi-family-home/pg%d


boulder_sold <- map_df(1:15,function(i){
  pg <- read_html(sprintf(url,i))
  data.frame(Price = parse_number(html_text(html_nodes(pg,".data-price"))),stringsAsFactors = FALSE)
})

我认为也许我的问题是网站正在超时并开除我,所以我还尝试了另一个带for循环的迭代,以尝试在阅读页面组之间进行中断。脚本是:

boulder_sold_break <- map_df(1:15,function(i){
  for(j in i){
    Sys.sleep(5)
    if((i %% 2) == 0){
      message("taking a break")
      Sys.sleep(2)
    }
  }
  pg <- read_html(sprintf(url,stringsAsFactors = FALSE)
}) 

因此,谁能告诉我:1)为什么我的代码不给我提供所有631个标价的数据框? 2)为什么相同的脚本在初次尝试后会停止给我任何价格(然后在一定时间后又返回输出结果)?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)