【发布时间】:2019-08-06 09:39:33
【问题描述】:
运行代码时出现此错误:
Error in data.frame(date = html_text(html_nodes(pagina, ".node-post-date")), :
arguments imply differing number of rows: 9, 10
在页面 983 中抓取标签时,我只得到 9 个结果(而不是通常每页 10 个结果)。我认为这种情况正在发生,因为在该网页中,我要抓取的日期之一与我正在使用的日期具有不同的标签。
我对 R 很陌生,所以我不知道如何在我的代码中运行 if 语句来为我没有得到的结果获取 NA。
这是我的代码:
#Libraries
library(rvest)
library(purrr)
library(tidytext)
library(dplyr)
url_espectador <- 'https://www.elespectador.com/search/farc?page=%d&sort=created&order=desc'
map_df(980:990, function(i) {
pagina <- read_html(sprintf(url_espectador, i, '%s', '%s', '%s', '%s'))
print(i)
data.frame(title = html_text(html_nodes(pagina, ".node-title a")),
date = html_text(html_nodes(pagina, ".node-post-date")),
link = paste0("https://www.elespectador.com", str_trim(html_attr(html_nodes(pagina, ".node-title a"), "href"))),
stringsAsFactors=FALSE)
}) -> noticias_espectador
除了 if 语句,还有其他解决方案吗?我要抓取大量页面,所以我需要避免这个行匹配问题。感谢您的帮助!
【问题讨论】:
-
你可能想看一下R中的
tryCatchfunction。关于错误,你可以使用它跳到下一步。 -
你是对的,@QHarr。我已经编辑过了。谢谢!
标签: r web-scraping rvest