#r #curl #download #ftp
#r #curl #Скачать #ftp
Вопрос:
Я уже три дня пытаюсь загрузить файл с FTP-сервера с помощью R безрезультатно. Я действительно все перепробовал и прочитал все вопросы, но все еще не могу справиться.
URL-адрес:
u <- "ftp://user:password@109.2.160.55/AGLO/2020/10/AGLO_00001_03-0_GDBX_1000077_202010032206_860101.CSV.gz"
Когда я копирую и вставляю эту ссылку в Firefox, я могу загрузить файл, но с помощью R я не могу. Я попытался download.file
, GET
, writeBin
, getURL
. Все не удалось: getURL
выдает следующую ошибку:
Error in curlPerform(curl = curl, .opts = opts, .encoding = .encoding) :
embedded nul in string: '37‹bbøÙx_03AGLO_00001_03-0_GDBX_1000077_202010032206_860101.CSV¬\M³£¸’Ý¿_Áîº02I Xɶ®*fn>nÔMÇ›231·èͼ210î×21óóç¤0406#¹.Œ§ ¢ë’צŽ’TæÉ17¡ÎUS*üï·30ÿ±ßbñKüÛùtøþ33#A–ýÆc36ãgÁy,177Ë%~f_ŽÝ{é~,év%}¡\~ÐIN¿ÿùï?~ÿ217¿þýÏ¿þ(17±34oY¾ýë¯?þû÷?ÿ$qù·Å/pv÷177{£òð]U½.umÊ¿235»¦/{s~ƒ”220–7ÓŸ¢Ã¿þø¯177þã¯ÿ)ó¸ÈŠ22_eEœã·îúz-K31—í £¯ZÕÑW5´º …H9/{Uéú¨K^BfNôsT©è]·n215ŽÊ221œ©²¦¯”e/æ»7efIy‹231Ä_"ayF?ÈñÏýsåQUGüâ3ô¼H’dt17724Hàgœ•ê=ºªópR„235笼02á¹VÇaðºRFy°yb6Ç_xz¹d¯Àf<—I2Â.30›04f°302ZÓõ@2735Z£ê23ÀDz( \7CwT}ÉJ215¿»nè£þ¢201230Ô^>"§33×ø3#çLäž¾éc›õ35§‰`wàr2220pg-êøë »èÖjØCï03çeý÷37j210êoM}n"ÝG׫ÆCÂ:£úï]S«è¢a_*°34¹Z1636C34XŽÜ¼œBð8YX217»amp;ã‘t=†›êz=´X…`yyÓ]g-G177é¾Ü¾(ü颶9`235Ñ31ÎXË1633*RÚwÏmèûgàešf|01Þ]23xžYËï/F·235}04ptM{Òj200·);ݾ33230ýE03úY_u215‡`j,´Û¾^°8}iëf<23Kå21702,àP2aÉß06‚%åMr¦ªì“¸Ý`jã%°“{ú±AùiÊ_s;ô_ºÄî04Öí0vý4ÜTÿá ÿÚœL5þv‡¹0ž’ÃxÁ夒25l
Никаких проблем с прокси-сервером нет, поскольку для получения u
URL-адреса я ищу в каталоге FTP.
Как я могу загрузить этот файл fing?
Также другим способом, которым я мог бы обойти это, является использование:
browseURL(u,
browser = "C:/Program Files (x86)/Mozilla Firefox/firefox.exe")
Проблема в том, что он откроет браузер Firefox, который будет:
- Спросите меня, уверен ли я, что хочу перейти на этот сайт, а затем
- Спросите меня, что я хочу сделать с этим файлом (не такая уж большая проблема, поскольку я могу выбрать значение по умолчанию для постоянной загрузки, но все же я не хочу)
Проблема в том, что я просто не хочу открывать браузер и не хочу, чтобы меня спрашивали, хочу ли я перейти на сайт и хочу ли я загрузить. На этом сервере много файлов, поэтому я хочу сделать все это автоматически, и мне нужно будет работать в parllel, поэтому всплывающее окно браузера не очень хорошо, но если все остальное не удается, я могу согласиться.
Я в таком отчаянии, что могу сообщить вам имя пользователя и пароль в частном порядке.
Комментарии:
1. Похоже, могут возникнуть проблемы с тем, как кодируется ваша строка, попробуйте передать u
enc2utf8
.2. getURL(enc2utf8(u)) та же ошибка
3. Здесь немного слепо: попробуйте использовать
httr
для загрузки файла что-то вродеGET(u, write_disk("myfile.gz", overwrite=TRUE))
4. Я получил эту ошибку, но, как ни странно, она все еще работала! Ошибка: оператор $ недопустим для атомарных векторов
5. Итак, он работал с использованием
httr
? Если это так, я могу опубликовать свой комментарий в качестве ответа, чтобы закрыть вопрос.
Ответ №1:
По-видимому, загрузка файла на диск с помощью httr
решила проблему. Можно объединить write_disk
и httr::GET
загрузить файлы на диск следующим образом:
library(httr)
to_download <- "https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf"
# Download pdf to disk
GET(to_download, write_disk("dummy.pdf"))