Ich versuche, einige Web-Scraping von Artikel Metadaten (Titel, Autoren, Abstract, etc.) zu tun. Ich habe eine Liste von Seiten, die ich durchsuchen muss, und jede Seite hat die Informationen, die ich brauche (außer den Inhaltsverzeichnisseiten, die in meiner Liste sind). Ich habe eine Funktion erstellt, um jeden Teil der Seite in einer Liste zusammenzufassen, und ich versuche, jede Seite durchzugehen und mit einem Datenrahmen meiner Ergebnisse zu enden. HierBuild Datenrahmen aus mehreren RVEST-Elementen
ist, was ich habe:
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))
}
Wenn ich pager.test(article.links.test[1])
die Ergebnisse laufen sind, was ich für 1 entry erwarten. Ich bin mir nicht ganz sicher, was ich tun soll, um einen Datenrahmen mit der Serie von Ergebnissen zu erstellen. Ich habe versucht, ein for-Schleife mit rbind die Zeilen zusammen zu stellen, aber wenn ich alle Zeilen versuchen, es wirft Fehler über die Einträge erzeugt werden:
#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]))
}
Wie kann ich Elemente von jedem der Seiten in meiner Liste kratzen und die Ergebnisse als Datenrahmen kombinieren?