【发布时间】:2019-02-28 15:12:23
【问题描述】:
我正在 R 中构建一个处理分页的简单刮板。我尝试使用 paste0 来遍历分页的 url 结构。
#a vector of the urls to scrape
a <- 1:5
URLs <- function(pages) {
out <- matrix(ncol = 1, nrow = 5)
for (i in seq_along(a)) {
fdata <- paste0("https://foo.bar", i, "/")
out[, i] <- apply(fdata)
}}
df <- lapply(URLs, function(u){
html.obj <- read_html(u)
title <- html.obj %>% html_nodes('a.storylink') %>% html_text()
score <- html.obj %>% html_nodes('span.score') %>% html_text()
data.frame(title = title, score = score)
})
library(reshape)
data <- merge_recurse(df)
View(data)
但是,当我尝试这个时,输出没有正确填充 URLs 变量,因此循环数据收集的其余部分根本不会执行。
我在这里找不到任何其他问题,这些问题涉及像这样的连接项目的循环。
有人可以提供我哪里出错的想法吗?
【问题讨论】:
-
什么是
out[, i] <- apply(fdata)?你的apply-call 是错误的(没有MARGIN=和FUN=)。你应该得到一个错误?! -
您是说我需要在
apply调用中指定预期的行数吗? -
apply("https://foo.bar1/")对我产生了错误:match.fun(FUN) 中的错误:缺少参数“FUN”,没有默认值错误? -
我最终使用了@minem 提供的解决方案,因此完全删除了整个部分
-
请阅读 stackoverflow.com/help/someone-answers 在 SO 上向 @minem 表示感谢的方式是 upvote 和 accept。
标签: r for-loop vectorization