Загрузка файла после входа с использованием https URL - PullRequest
0 голосов
/ 27 апреля 2018

Я пытаюсь загрузить файл Excel, на который у меня есть ссылка, но мне необходимо войти на страницу, прежде чем я смогу загрузить файл. Я успешно прошел страницу входа в систему с помощью rvest, rcurl и httr, но после входа в систему мне крайне сложно загружать файл.

url <- "https://website.com/console/login.do"
download_url <- "https://website.com/file.xls"
session <- html_session(url)
form <- html_form(session)[[1]]

filled_form <- set_values(form,
                          userid = user,
                          password = pass)

## Save main page url
main_page <- submit_form(session, filled_form)

download.file(download_url, "./file.xls", method = "curl")

Когда я запускаю команду download.file, файл появляется в моей рабочей директории, но это не тот файл, который я пытаюсь загрузить, а фактически просто поврежденный файл .XLS без данных.

Для справки, если я войду на веб-сайт через Chrome и вставлю ссылку для загрузки в окно браузера после того, как войду в систему, файл автоматически начнет загрузку. Если я сделаю то же самое в IE, появится диалоговое окно загрузки файла и спросит меня, хочу ли я сохранить файл.

Возможно, актуальная информация:

  • Это для моего компьютера на работе, где куки отключены, поэтому я не могу использовать куки из моего браузера
  • Я пытался использовать разные методы с httr и rcurl, основанные на многочисленных сообщениях на SO, но безрезультатно

Заранее спасибо за ваше время!

1 Ответ

0 голосов
/ 28 апреля 2018

Кто-то на / r / rstats действительно нашел ответ на этот вопрос. Решение моей проблемы было следующим:

#after login and submit_form do this:
download <- jump_to(main_page, download_url)

# write file to current working directory
writeBin(download$response$content, basename(download_url))

Ссылка на оригинальный вопрос SO

...