очистить несколько URL из CSV-файла с помощью R - PullRequest
1 голос
/ 20 апреля 2020

У меня есть CSV-файл, который содержит информацию о наборе статей, а 9-й том относится к URL-адресам. Я успешно очистил заголовок и аннотацию по одному URL-адресу со следующим кодом:

library('rvest')
url <- 'https://link.springer.com/article/10.1007/s10734-019-00404-5'
webpage <- read_html(url)

title_data_html <- html_nodes(webpage,'.u-h1')
title_data <- html_text(title_data_html)
head(title_data)

abstract_data_html <- html_nodes(webpage,'#Abs1-content p')
abstract_data <- html_text(abstract_data_html)
head(abstract_data)

myTable = data.frame(Title = title_data, Abstract = abstract_data)
View(myTable)

Теперь я хочу использовать R, чтобы очистить заголовок и реферат каждой статьи. Мой вопрос заключается в том, как импортировать URL-адреса, содержащиеся в файле CVS, и как записать a для l oop, чтобы очистить нужные мне данные. Я совсем новичок, поэтому спасибо заранее за вашу помощь.

1 Ответ

0 голосов
/ 20 апреля 2020

Попробуйте это:

library(rvest)

URLs <- read.csv("urls.csv")
n <-nrow(URLs)
URLs2 <-character()

for (i in 1:n) {
  URLs2[i]<-as.character(URLs[i,1])

}

df <- data.frame(Row = as.integer(), Title=as.character(), Abstract=as.character(), stringsAsFactors = FALSE)

for (i in 1:n) {
  webpage <- tryCatch(read_html(URLs2[i]), error = function(e){'empty page'})
  if (!"empty page" %in% webpage) {
  title_data_html <- html_nodes(webpage,'.u-h1')
  title_data <- html_text(title_data_html)
  abstract_data_html <- html_nodes(webpage,'#Abs1-content p')
  abstract_data <- html_text(abstract_data_html)
  temp <- as.data.frame(cbind(Row = match(URLs2[i], URLs2), Title = title_data, Abstract = abstract_data))
  if(ncol(temp)==3) {
    df <- rbind(df,temp)
  }
}
}

View(df)

Редактировать: Код был отредактирован таким образом, что он будет работать, даже если URL-адреса нарушены (пропуская их). Выходные строки будут пронумерованы с соответствующим номером строки записи в формате CSV.

enter image description here

...