Webscraping с петлей rvest - PullRequest
       8

Webscraping с петлей rvest

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

Я пытаюсь почистить статьи из www.filmneweurope.com (домашняя страница; все страницы). Конечным результатом должен быть фрейм данных с URL каждой статьи (20 на страницу), заголовком, страной (категорией), датой, вступительным текстом и полным текстом. Для вступительного текста и полного текста необходимо, чтобы каждая статья содержала al oop для очистки содержимого со страницы статьи.

Или можно извлечь текст из всех статьи для разделения файлов .txt и, кроме того, имеют фрейм данных с URL, заголовками, датами и ссылкой на связанный файл .txt (например, номер)?

Итак, мне нужна программа, которая просматривает каждый объект (статью) и просматривает все страницы Film New Europe (домашняя страница).

Код, который я написал, кажется, работает, но, кажется, фактически не захватывает данные: мой фрейм данных пуст. Я не могу понять, почему ...

library(rvest)
library(plyr)

fne_home <- html_session("http://www.filmneweurope.com/")

getArticle <- function(fne_article){
  title<-fne_article%>%
    html_nodes(".itemTitle")%>%
    html_text()%>%
    gsub("^\\s+|\\s+$", "", .)
  date<-fne_article%>%
    html_nodes(".itemDateCreated")%>%
    html_text()%>%
    gsub("^\\s+|\\s+$", "", .)
  introtext<-fne_article%>%
    html_nodes(".itemIntroText")%>%
    html_text()%>%
    gsub("^\\s+|\\s+$", "", .)
  fulltext<-fne_article%>%
    html_nodes(".itemFullText")%>%
    html_text()%>%
    gsub("^\\s+|\\s+$", "", .)
  record_article<-data.frame(title, date, introtext, fulltext)
  record_article
}

get20articles<-function(articles_URLs){
  data<- data.frame()
  i=1
  for(i in 1:length(articles_URLs)){
    fne_article<-read_html(paste0("http://filmneweurope.com/", articles_URLs[i]))
    record_article<-getArticle(fne_article)
    data<- rbind.fill(data, record_article)
    print(i)
  }
  data
}

get20articlesXpages <- function(fne_home, X){
  data<-data.frame() 
  i=1
  for(i in 1:X){
    if(i !=1){ #go to the next page but don't skip the first one
      next_URL<-fne_home%>%
        html_nodes("li")%>%
        html_nodes("a")%>%
        html_attr("href")
      fne_home<-jump_to(fne_home, paste0("www.filmneweurope.com", next_URL[83]))
    }
    articles_URLs <-fne_home%>%
      html_nodes(".catItemTitle")%>%
      html_attr("href")
    df20articles<-get20articles(articles_URLs)
    data<-rbind.fill(data,df20articles)
    print(paste0("Page",i))
  }
  data
}
articles<- get20articlesXpages(fne_home,2)

Буду очень признателен за вашу помощь! Заранее спасибо.

...