【问题标题】:Download all excel files from a webpage to R dataframes将网页中的所有 excel 文件下载到 R 数据框
【发布时间】:2021-09-18 18:34:30
【问题描述】:

我的问题与this one 非常相似。我想从this webpage 下载所有 Excel 文件 (.xlsx)。但不同之处在于(我认为)我没有与示例中使用的相同模式。我尝试了几种变体,但没有结果。知道如何下载这些文件吗?此外,如果您能展示我如何将它们直接下载到数据帧中(无需先将它们下载到我的电脑上),我将不胜感激。

【问题讨论】:

  • This answer 展示了如何获取下载链接。请注意,其中一些文件是 .xls,因此您可能需要将相关位更改为 contains(@href, '.xls')
  • 您说“所有 Excel 文件”,但该页面中有 .xlsx 和 .xls 文件。两个都想要吗?
  • 是的,我都想要! //罗西

标签: r web-scraping download


【解决方案1】:

一种下载 excel 文件的简单方法,一次一步。

首先,获取链接。

library(rvest)

url <- "https://www.fondbolagen.se/fakta_index/statistik/"

read_html(url) |>
  html_elements("p") |>
  html_elements("a") |>
  html_attr("href") |>
  (\(x) grep("\\.xls", x, value = TRUE))() |>
  (\(x) sprintf("http://www.fondbolagen.se%s", x))() -> excel_links

现在,使用this Rich Scriven post 中的代码下载文件。我省略了文件创建说明。

dir.create("myexcel")
## save the current directory path for later
wd <- getwd()
## change working directory for the download
setwd("myexcel")
## download them all
lapply(excel_links, \(x) download.file(x, basename(x)))
## reset working directory to original
setwd(wd)

【讨论】:

  • 嗨!我一直在尝试使用您的代码,但是我似乎无法弄清楚“ |> ”在上面的第一个块中做了什么?他们应该是“%>%”吗?此外,R 似乎不喜欢在第一个块的两个位置的括号中的 x 之前有一个反斜杠。也许我在使用 Mac 时遇到了问题?
  • @Rosie 不,它是一个类似于%&gt;% 的管道,但从 R4.1.0 开始在基础 R 中。如果您的 R 版本较旧,请使用 magrittr 的 %&lt;%
  • 谢谢!另外,只是想知道,由于我正在编辑评论,不知道您是否在上面看到了这一点:R 似乎不喜欢在第一个块的两个位置的括号中的 x 之前有一个反斜杠。也许我在使用 Mac 时遇到了问题?
  • @Rosie 好的,这是 R 4.1.0 中引入的 2 个新功能。 \(x) 是新的 lambda,如果您的 R 版本不喜欢它,请替换为等效的 function(x)
  • 感谢您的回答和 cmets 中的进一步指导。问题解决了!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-14
  • 2013-11-01
  • 1970-01-01
相关资源
最近更新 更多