Чтение CSV-файла из защищенной ссылки с помощью J

#curl #j

#curl #j

Вопрос:

Я пытаюсь получить CSV-файл из https://www.alphavantage.co / и передайте значения в J для обработки.

Я пробовал httpget и web / gethttp (на основе curl), но столкнулся с обоими, что касается httpget, я не знаю, как передать https в функцию httpget. Я вообще не мог заставить gethttp работать.

ссылка будет выглядеть следующим образом (это демонстрационная ссылка): https://www.alphavantage.co/query ?функция=TIME_SERIES_INTRADAYamp;symbol=MSFTamp;интервал = 5 минут amp;apikey=demoamp;тип данных = csv

моя пробная версия с httpget выдает эту ошибку:

 |domain error: httpget
   log    ;:^:_1 host;(":port);path
 

Как я могу использовать J для получения онлайн-csv и передачи его в свой код? Спасибо.

Редактировать: это моя платформа

 Engine: j901/j64/linux
Beta-c: commercial/2019-04-03T10:18:09
Library: 9.01.03
Qt IDE: 1.8.1/5.5.1
Platform: Linux 64
Installer: J901 install
InstallPath: /home/sam/j901
 

Ответ №1:

Используя приведенную выше ссылку, для меня в Windows 10 работает следующее:

    load 'web/gethttp csv'
   Link=: 'https://www.alphavantage.co/query?function=TIME_SERIES_INTRADAYamp;symbol=MSFTamp;interval=5minamp;apikey=demoamp;datatype=csv'
   fixcsv gethttp Link
┌───────────────────┬────────┬────────┬────────┬────────┬────────┐
│timestamp          │open    │high    │low     │close   │volume  │
├───────────────────┼────────┼────────┼────────┼────────┼────────┤
│2019-04-18 16:00:00│123.3900│123.5000│123.3000│123.3700│1327949 │
├───────────────────┼────────┼────────┼────────┼────────┼────────┤
│2019-04-18 15:55:00│123.4100│123.4800│123.3000│123.3900│931359  │
├───────────────────┼────────┼────────┼────────┼────────┼────────┤
│2019-04-18 15:50:00│123.3250│123.4200│123.2900│123.4100│340777  │
└───────────────────┴────────┴────────┴────────┴────────┴────────┘
...

      JVERSION
Engine: j807/j64/windows
Release-d: commercial/2019-03-18T13:21:35
Library: 8.07.25
Qt IDE: 1.7.9s/5.9.6
Platform: Win 64
Installer: J807 install
InstallPath: c:/program files/j64-807
Contact: www.jsoftware.com
 

Для Linux, похоже, требуется дополнительный набор двойных кавычек, чтобы ссылка была правильно интерпретирована curl или wget :

    fixcsv gethttp dquote Link
┌───────────────────┬────────┬────────┬────────┬────────┬────────┐
│timestamp          │open    │high    │low     │close   │volume  │
├───────────────────┼────────┼────────┼────────┼────────┼────────┤
│2019-04-18 16:00:00│123.3900│123.5000│123.3000│123.3700│1327949 │
├───────────────────┼────────┼────────┼────────┼────────┼────────┤
...
 

Двойные кавычки отлично работают и для Windows, поэтому потенциально вы можете просто заключить ссылку в двойные кавычки, и она должна работать на разных платформах.

Комментарии:

1. применяя приведенный выше код (аналогичный моим испытаниям); он выдает пустую строку. Я использую ubuntu с J9b

2. Если я просто попробую raw curl или wget в терминале Ubuntu с этой ссылкой, я тоже получу ошибки (недопустимый apikey или аналогичный). Добавление двойных кавычек вокруг строки, похоже, исправляет ситуацию. Работает внутри J tool. Обновит мой ответ.