Я строю веб-скребок для некоторых новостных сайтов в Швейцарии. После некоторых проб и ошибок и большой помощи от StackOverflow (спасибо всем!) Я дошел до того, что смог получить текстовые данные из всех статей.
#packages instalieren
install.packages("rvest")
install.packages("tidyverse")
install.packages("dplyr")
library(rvest)
library(stringr)
#seite einlesen
apisrf<- read_xml('https://www.srf.ch/news/bnf/rss/1646')
urls_srf <- apisrf %>% html_nodes('link') %>% html_text()
zeit_srf <- apisrf %>% html_nodes('pubDate') %>% html_text()
#data.frame basteln
dfsrf_titel_text <- data.frame(Text = character())
#scrap
for(i in 1:length(urls_srf)) {
link <- urls_srf[i]
artikel <- read_html(link)
#Informationen entnehmen
textsrf<- artikel %>% html_nodes('p') %>% html_text()
#In Dataframe strukturieren
dfsrf_text <- data.frame(Text = textsrf)
dfsrf_titel_text <- rbind(dfsrf_titel_text, cbind(dfsrf_text))
}
выполнение этого дает мне dfsrf_titel_text. (Я собираюсь объединить это с названиями статей в какой-то момент, но пусть это будет моей проблемой.)
однако, теперь мои данные довольно неопрятны, и я не могу понять, как очистить таким образом, это работает для меня. Особенно раздражает то, что тексты из разных статей на самом деле не структурированы таким образом, а получают новую строку, когда в текстах есть абзац. Я не могу объединить абзацы, потому что все тексты имеют разную длину. (Первая статья, начиная с пункта 3, очень длинная, потому что она представляет собой тикер, рассказывающий о коронном кризисе, поэтому не запутайтесь, если вы запустите мой код.)
как мне заставить R создать новый строка в моем фрейме данных, только если текст взят из новой статьи (имеется в виду новый URL?
спасибо за вашу помощь!