【发布时间】:2018-08-16 13:23:54
【问题描述】:
我正在尝试抓取一个数据库,其中包含有关丹麦某个地区以前售出的房屋的信息。我不仅要从第 1 页检索信息,还要从第 2、3、4 页等检索信息。
我是 R 新手,但从一个教程中我得到了这个。
library(purrr)
library(rvest)
urlbase <- "https://www.boliga.dk/solgt/alle_boliger-4000ipostnr=4000&so=1&p=%d"
map_df(1:5,function(i){
cat(".")
page <- read_html(sprintf(urlbase,i))
data.frame(Address = html_text(html_nodes(page,".d-md-table-cell a")))
Price = html_text(html_nodes(page,".text-md-left+ .d-md-table-cell .text-right"))
Rooms = html_text(html_nodes(page,".d-md-table-cell:nth-child(5) .paddingR"))
m2 = html_text(html_nodes(page,".qtipped+ .d-md-table-cell .paddingR"))
stringsAsFactors = FALSE
}) -> BOLIGA.ROSKILDE
View(BOLIGA.ROSKILDE)
这给了我信息:
bind_rows_(x, .id) 中的错误:参数 1 必须有名称
欢迎任何帮助
【问题讨论】:
-
对我来说
https://www.boliga.dk/solgt/alle_boliger-4000ipostnr=4000&so=1&p=%d不起作用,给Bad Request - Invalid URL。 -
boliga.dk/solgt/alle_boliger-4000ipostnr=4000&so=1&p=1 /// ups sorry.. %d 对于第 1 页应该是 1,对于第 2 页等等。
-
你有没有成功使用类似的代码但只有一页?当我遇到这样的设置问题时,我会从运行
map的一次迭代的代码开始,例如抓取单个页面。然后我尝试map而不是map_dfr,因为它对结构不那么严格。bind_rows中的一个错误向我表明问题在于将所有map输出绑定到一个数据帧中 -
您还缺少用于在数据框中创建列的代码之间的逗号,然后让
stringsAsFactors = FALSE自行挂起,因此您只是返回FALSE,而不是数据框
标签: r web-scraping rvest purrr