【发布时间】:2016-08-11 02:07:26
【问题描述】:
我正在尝试对期刊文章元数据(标题、作者、摘要等)进行一些网络抓取。我有一个需要导航的页面列表,每个页面都有我需要的信息(列表中的目录页面除外)。我构建了一个函数将页面的每个部分拼凑成一个列表,我试图浏览每个页面并最终得到一个结果数据框。
这是我所拥有的:
article.links <- c("http://onlinelibrary.wiley.com/doi/10.1002/jee.20116/abstract",
"http://onlinelibrary.wiley.com/doi/10.1002/jee.20120/abstract",
"http://onlinelibrary.wiley.com/doi/10.1002/jee.20117/abstract"
)
pager <- function(page) {
new.row = vector("list", 4)
page <- read_html(page)
#DOI
new.row[1] <- page %>%
html_node("#doi") %>%
html_text()
#Title
new.row[2] <- page %>%
html_node(".mainTitle") %>%
html_text()
#Authors
new.row[3] <- page %>%
html_node("#authors") %>%
html_text()
#Abstract
new.row[4] <- page %>%
html_node("#abstract") %>%
html_text()
return(unlist(new.row))
}
当我运行 pager.test(article.links.test[1]) 时,结果是我对 1 个条目的预期。不过,我不太确定如何使用一系列结果构建数据框。我尝试使用 rbind 的 for 循环将行放在一起,但是当我尝试所有行时,它会引发有关正在生成的条目的错误:
#This is what doesn't seem to work
abstracts <- data.frame()
for(key in 1:length(article.links.test)) {
abstracts <- rbind(abstracts2, pager.test(article.links.test[key]))
}
如何从列表中的每个页面中抓取元素并将结果组合为数据框?
【问题讨论】:
标签: r dataframe web-scraping rvest