У меня есть пара проблем, которые я не могу найти разумного решения с помощью поиска.Я работаю над извлечением информации о цитировании из журналов, и у меня возникла небольшая хитрость, когда дело доходит до их компиляции в кадре данных.
Этот код хорошо обрабатывается, но большая проблема в том, что он создает один длинный вектор вместо таблицы.Это первый выпуск.
Вторая проблема заключается в том, что если я попытаюсь загрузить веб-страницы из файла CSV, скрипт не запустится.Я получу следующую ошибку:
Ошибка в UseMethod ("read_xml"): нет применимого метода для read_xml, примененного к объекту класса "factor"
Это просто CSV с указанными URL-адресами.
Третья и последняя проблема заключается в том, что статья может иметь более одного электронного письма и, следовательно, более одной строки.Код игнорирует это.Например, статья http://journals.sagepub.com/doi/full/10.3102/0013189X17737739
library(rvest)
data<- c("http://journals.sagepub.com/doi/abs/10.3102/0013189X037001060",
"http://journals.sagepub.com/doi/abs/10.3102/0013189X037002102",
"http://journals.sagepub.com/doi/abs/10.3102/0013189X037002104",
"http://journals.sagepub.com/doi/full/10.3102/0013189X17737739")
scrape <- function(x){
doc<-read_html(x)
author <- html_text(html_nodes(doc, '.art_authors'))
year <- html_text(html_nodes(doc, '.year'))
journalName <- html_text(html_nodes(doc, '.journalName'))
art_title <- html_text(html_nodes(doc, '.art_title'))
volume <- html_text(html_nodes(doc, '.volume'))
page <- html_text(html_nodes(doc, '.page'))
email <- html_text(html_nodes(doc, xpath = "//a[@class = 'email']"))
Author = ifelse(length(author)==0, NA, author)
Year = ifelse(length(year)==0, NA, year)
Journal_Name = ifelse(length(journalName)==0, NA, journalName)
Art_Title = ifelse(length(art_title)==0, NA, art_title)
Volume = ifelse(length(volume)==0, NA, volume)
Page = ifelse(length(page)==0, NA, page)
Email = ifelse(length(email)==0, NA, email)
row<-cbind(Author, Year, Journal_Name, Art_Title, Volume, Page, Email)
}
y <- lapply (data, scrape)
View (y)
, когда я пытаюсь запустить скрипт из csv
data<- read.csv ("link_test.csv")
y <- lapply (data$link, scrape)
Любая помощь будет принята с благодарностью.