R download.file с методом "wget" и указанием дополнительных параметров wget - PullRequest
0 голосов
/ 11 мая 2018

У меня, вероятно, довольно простой вопрос об использовании функции download.file в R с использованием опции wget и использовании некоторых дополнительных опций wget, но я просто не могу заставить ее работать.

Что я хочу сделать: загрузить локальную копию веб-страницы (на самом деле несколько веб-страниц, но сейчас задача состоит в том, чтобы заставить ее работать даже с 1).

Задача: мне нужнолокальная копия должна выглядеть точно так же, как онлайн-версия, что также означает включение ссылок / значков и т. д. Я обнаружил, что wget - хороший инструмент для этого, и я хотел бы указать некоторые дополнительные параметры, такие как --random wait-p 1009 *Я нашел несколько очень полезных уроков по этому вопросу, однако ни один из них не использовал дополнительные опции в R, а непосредственно в wget.

Итак, вот код, который я собрал для этого:

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

, который не работает.Я подозреваю, что есть проблемы как с методом "wget", так и со спецификацией дополнений.

Может кто-нибудь помочь, это будет высоко ценится?

Дополнительный вопрос: я знаю, что destfile должен указывать имя файла для загруженного документа, но есть ли способ указать папку через путь, в который должны быть сохранены все загруженные файлы?

Заранее спасибо!

Лучший Кэролин

1 Ответ

0 голосов
/ 11 мая 2018

Вы можете указать несколько параметров непосредственно в дополнительном аргументе, без getOption().

Кроме того, вы можете просто указать путь к файлу, в который вы хотите сохранить загруженный файл, в destfile.

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

У вас, однако, будет проблема с попыткой сохранить все загруженные элементы в один и тот же destfile.

Обратите внимание, что был похожий вопрос некоторое время назад (я видел это только сейчас). Предлагаемое решение состояло в том, чтобы использовать 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 () ) доступен в таких пакетах, как gnuwin32 и Cygwin. В этом случае команда system() может все еще не работать, если система не знает, где находится исполняемый файл wget. В этом случае вам может потребоваться указать абсолютный путь к исполняемому файлу wget.

...