尝试在 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))
我只是 运行 我的代码最近出现了一个问题,这可能是由于更新了 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))