尝试在R中绑定RSS源中的临时新闻文章时出错

尝试在R中绑定RSS源中的临时新闻文章时出错,r,web-scraping,rss,R,Web Scraping,Rss,我最近在代码中遇到了一个问题,可能是因为对R或我的某个R包进行了更新 我需要做的是从google alerts的RSS提要中抓取新闻文章。直到最近一切都很顺利。我正在使用以下代码- load.lib <- c("rvest", "XML", "purrr", "dplyr", "stringr", "feedeR") install.lib<-load.lib[!l

我最近在代码中遇到了一个问题,可能是因为对R或我的某个R包进行了更新

我需要做的是从google alerts的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 ()

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

您可以使用
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))
库(rvest)
刮除%
html_节点(“p”)%>%
html_text()%>%
粘贴0(折叠=“”)
}

我看这个问题和你的新问题有关。这里的预期输出是什么?20行,其中
link3
中的每个链接有一个文本?或者你想为每一段写不同的行吗?@RonakShah你完全正确。这两个问题是相互联系的。最终目标是从多个RSS源中获取一组网站。然后把这些都放在一个电子表格中。顺便说一句,我很感谢你的帮助。我的答案是你一直在寻找的吗?顺便说一句,在我的
data.frame
调用中,我使用
head
仅选择前几个链接。您可能需要删除以获取所有链接的数据。这非常有效,我唯一添加的是添加以下行“subset(,nchar(as.character())
Warning message:
In (function (..., deparse.level = 1)  :
  number of columns of result is not a multiple of vector length (arg 1)
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))