尝试在 R 中绑定来自 RSS 提要的新闻文章时出错

error when trying to bind scraped news articles from RSS feed in R

我只是 运行 我的代码最近出现了一个问题,这可能是由于更新了 R 或我的 R 包之一。

我需要做的是从 google 警报的 RSS 提要中抓取新闻文章。直到最近一切都很顺利。我正在使用以下代码-

load.lib <- c("rvest", "XML", "purrr", "dplyr", "stringr", "feedeR")
install.lib<-load.lib[!load.lib %in% installed.packages()]
for(lib in install.lib) install.packages(lib,dependencies=TRUE)
sapply(load.lib,library,character=TRUE)

feed<- feed.extract("https://www.google.com/alerts/feeds/01499783252492076179/351667870973011596")
feed <- as.data.frame (feed) 
links <- feed$items.link
link <- gsub("&ct=ga&cd=.*", "", links)
link2 <- gsub("*.rct=j&sa=t&url=", "", link)
link3 <- gsub ("https://www.google.com/url", "", link2)

scrape <- function (x) {
example = read_html(x)

p_text <- example %>%
        html_nodes("p") %>%
        html_text()
}

y <- lapply (link3, scrape)

df <- do.call(rbind, y) %>%
    as.data.frame ()

我的代码在最后一点崩溃了-

df <- do.call(rbind, y) %>%
    as.data.frame ()

我之前有一个数据框,其中每一行都是一篇抄袭的文章,其中列与第一、第二、第三段等相关联。

现在我得到这个错误-

Warning message:
In (function (..., deparse.level = 1)  :
  number of columns of result is not a multiple of vector length (arg 1)

我很确定这与具有不同段落数的抓取文章有关。

您可以将每个 link 中使用 paste0 的文本组合成一个字符串。

library(rvest)

scrape <- function (x) {
  example = read_html(x)
  example %>%
    html_nodes("p") %>%
    html_text() %>%
    paste0(collapse = ' ')
}


df <- data.frame(link = head(link3),
                 text = sapply(head(link3), scrape))