我有一个可能相当基本的问题,即使用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
应该为下载的文档指定一个文件名,但有没有办法可以通过一个路径指定一个文件夹,所有下载的文件都应该保存到该文件夹中?
提前谢谢!
最佳卡罗琳
答案 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可执行文件的绝对路径。