R download.file with" wget" -method并指定额外的wget选项

时间:2018-05-11 13:22:42

标签: r web-scraping wget

我有一个可能相当基本的问题,即使用download.file选项并使用一些wget额外选项在R中使用wget函数,但我无法让它工作。

我想做什么:下载网页的本地副本(实际上是几个网页,但是现在的挑战是让它在1中工作)。

挑战:我需要本地副本看起来与在线版本完全一样,这也意味着包含链接/图标等。我发现wget是一个很好的工具,我想指定一些额外的选项,例如--random wait-p-r。我发现了一些非常有用的教程,但是他们都没有使用R中的额外选项,而是直接使用wget。

所以这是我为此编写的代码:

download.file('https://www.wikipedia.org/', destfile = "wikipage", method = "wget", extra = getOption("--random wait", "-r", "-p"))

哪个不起作用。我怀疑两者都有问题," wget"方法和附加规范。

任何人都可以提供帮助,我们将不胜感激吗?

一个额外的问题:我知道destfile应该为下载的文档指定一个文件名,但有没有办法可以通过一个路径指定一个文件夹,所有下载的文件都应该保存到该文件夹​​中?

提前谢谢!

最佳

卡罗琳

1 个答案:

答案 0 :(得分:1)

您可以直接在额外参数中指定多个选项,而不使用getOption()

此外,您只需在destfile中添加要将下载文件保存到文件的路径。

download.file('https://www.wikipedia.org/', destfile = "mydirectory/wikipage.html", method = "wget", extra = "-r -p --random-wait")

但是,您将遇到问题,即它会尝试将所有下载的项目保存到同一destfile

请注意,前一段时间有similar question(我现在才看到)。建议的解决方案是使用system()而不是download.file来运行wget命令。适应您的问题:

setwd("./mydirectory")
system("wget http://www.wikipedia.org -p -k --random-wait")

编辑:还请注意,这两个命令仅适用于安装了wget的系统。在Linux / BSD / Mac上,要安装的软件包通常应该称为wget。在Windows上,wget是(根据download.file() help),可从gnuwin32和Cygwin等软件包中获得。在这种情况下,如果系统不知道wget可执行文件的位置,system()命令可能仍然不起作用。在这种情况下,您可能需要指定wget可执行文件的绝对路径。