【发布时间】:2019-05-25 19:41:39
【问题描述】:
我试图抓取一个网站以使用 rvest 和 purrr 从许多页面中提取数据。但每次我运行代码时,“open.connection(x, "rb") 中的错误:HTTP 错误 404。”出现。
url <- "http://books.toscrape.com/catalogue/page-%d"
map_df(1:10, function(i){
page <- read_html(sprintf(url, i))
cat(".")
booksdf <- data.frame(safely( title <- html_nodes(page, "h3, #title") %>% html_text(),
price <- html_nodes(page, ".price_color") %>% html_text() %>% gsub("£", "", .),
rating <- html_nodes(page, ".star-rating") %>% html_attrs() %>% str_remove("star-rating") %>%str_replace_all(c("One" = "1", "Two" = "2", "Three" = "3", "Four" = "4", "Five" = "5")) %>% as.numeric()
)
)
}
)
Error in open.connection(x, "rb") : HTTP error 404.
【问题讨论】:
-
这是一个 R 编码错误?
-
404错误表示在服务器中找不到您请求的页面。我建议您检查以确保您正在构建正确的 URL。如果我在浏览器中转到
http://books.toscrape.com/catalogue/page-2,我会收到一个 404 错误,就像 R 一样。您是否忘记在 URL 中添加“.html”部分 -
感谢@MrFlick 成功了。但是当我运行代码时出现另一个错误“类型(模式)错误:缺少参数“模式”,没有默认值”我找不到任何丢失的参数(每个代码在 map_df 之外运行完美)。