Как перейти по URL в R - PullRequest
0 голосов
/ 08 апреля 2020

Извините за плохой заголовок, но я не знаю, как еще сказать "следовать".

Я хочу удаленно загрузить CSV-файл с веб-сайта. Я мог бы сделать это, нажав кнопку загрузки с помощью RSelenium, но я обнаружил, что есть прямая ссылка, которая инициирует загрузку для меня. Т.е. я мог бы go до https://www.fake-website-url.com и нажать кнопку загрузки, или я мог бы просто ввести https://www.fake-website-url.com/exportcsv в свой браузер, и он автоматически загрузится.

Я стараюсь не использовать RSelenium всякий раз, когда могу помочь, так как он неуклюжий, но я не уверен, как просто начать загрузку. Ничего из rvest не выделяется, поскольку я на самом деле не читаю html.

По сути, я ищу функцию R, такую ​​как gotoURL('https://www.website.com/exportfullcsv), которая будет загружать файл точно так же, как если бы я ввел URL в свой браузер.

1 Ответ

1 голос
/ 09 апреля 2020

Поскольку вы сказали, что смогли найти прямой URL-адрес, проблема не в том, что загрузка не удалась, а в том, что вы неправильно обращаетесь к контенту.

Я загрузил небольшой zip-файл в персональный сайт и запустил этот код:

dl <- httr::GET("https://.../sessions_tracker.zip")
dl
# Response [https://.../sessions_tracker.zip]
#   Date: 2020-04-08 20:59
#   Status: 200
#   Content-Type: application/zip
#   Size: 19.2 kB
# <BINARY BODY>

length(httr::content(dl))
# [1] 19184
19184 / 1000
# [1] 19.184     ### confirmation of download, this rounds to 19.2kB

head(httr::content(dl), n=80)
#  [1] 50 4b 03 04 14 00 00 00 08 00 60 7e 7b 50 1e c3 ed e8 32 4a 00 00 fa b7 01 00 14 00 1c 00
# [31] 73 65 73 73 69 6f 6e 73 5f 74 72 61 63 6b 65 72 2e 63 73 76 55 54 09 00 03 53 83 7e 5e 5e
# [61] 01 85 5e 75 78 0b 00 01 04 d3 c6 2d 00 04 64 00 00 00 b4 5d

writeBin(httr::content(dl), "sessions_tracker.zip")
...