首页 > 解决方案 > 在 R 语言中找不到对象

问题描述

我是使用 R 的新手,这是我尝试玩一轮代码以从多个页面中抓取引号

# Load Libraries
library(rvest)      # To Scrape
library(tidyverse)  # To Manipulate Data

# Scrape Multiple Pages
for (i in 1:4){
  site_to_scrape <- read_html(paste0("http://quotes.toscrape.com/page/",i))
  temp <- site_to_scrape html_nodes(".text") html_text()
  content <- append(content, temp)
}

#Export Results To CSV File
write.csv(content, file = "content.csv", row.names = FALSE)

我遇到了Object not found内容变量的错误。如何克服此错误并设置对象以便在附加行中可重用?

标签: rweb-scraping

解决方案


如果您要抓取许多页面,则循环中的增长向量非常低效。相反,您应该做的是初始化一个您事先知道的具有特定长度的列表。

library(rvest)
n <- 4
content = vector('list', n)

# Scrape Multiple Pages
for (i in 1:n){
  site_to_scrape <- read_html(paste0("http://quotes.toscrape.com/page/",i))
  content[[i]] <- site_to_scrape %>%
    html_nodes(".text") %>%
    html_text()
}
write.csv(unlist(content), file = "content.csv", row.names = FALSE)

另一个不初始化的选项是使用sapply/ lapply

all_urls <- paste0("http://quotes.toscrape.com/page/",1:4)
content <- unlist(lapply(all_urls, function(x) 
               x %>% read_html %>%  html_nodes(".text") %>% html_text()))

推荐阅读