Скачать файл из интернета


21

Вступление

Да, это так просто. Скачайте любой файл из интернета!

правила

Вы должны использовать API вашего языка.

Вы должны вывести файл, который вы скачали в STDOUT, консоль, файл и т. Д.

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

Удачи!

Ответы:


14

Баш, 21 17 11 9 7 байт

curl ai

1
curlэто не инструмент, который уже существует? :)
Абель Том

1
@AbelTom это "API вашего языка"
programmer5000

7
curl aiне нужно http: //
опатут

1
@SIGSEGV: Потому что это не выводит на стандартный вывод .
Легкость гонок с Моникой

2
Это не работает для меня? Что aiдолжно быть? Дает curl: (6) Could not resolve host: aiздесь.
R

13

Рёда , 29 байт

{saveResource"http://ai","a"}

Это анонимная функция, которая создает файл, aсодержащий HTML-код http://ai.


1
Теперь, чтобы убедить их запустить FTP-сервер ...
user253751

1
Как этот URL действителен?
Юлиан

1
@IulianOnofrei Почему это не будет действительным? У него есть протокол, имя хоста и нет порта, пути или строки запроса, но все они являются необязательными. Вы спрашиваете, почему ai является допустимым именем хоста?
user253751

1
@IulianOnofrei ai - это домен верхнего уровня. Обычно домены верхнего уровня не разрешают адреса, на которых размещаются веб-сайты, но этот, очевидно, делает.
user253751

4
Для тех, кто - как и я - URL не разрешается, вы, вероятно, можете просмотреть его, используя IP-адрес напрямую: 209.59.119.34
Engineer Toast

6

MATL, 8 байт

'v.ht'Xi

Перед URL Xi( urlread) указывается префикс, http://если он еще не создан. Кроме того, выходные данные urlreadсодержат содержимое ответа, и это неявно печатается при выходе из программы.

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


5

Bash, 45 43 байта

exec 3<>/dev/tcp/ai/80;echo GET />&3;cat<&3

открывает tcp-сокет с сайтом ai в файловом дескрипторе 3, выдает get и выводит результат. возможно, можно играть в гольф дальше.


1
Вы можете удалить двойные кавычки "вокруг GET /.
Цифровая травма

Удивительно! Это очень хорошо, даже если оно не самое короткое.
Джон Хэтвуд

4

Mathematica 18 байтов

URLDownload@"v.ht"

Я думаю, что FetchURLработает
ngenisis

Думаю, вы имеете в виду, URLFetchчто требуется версия Mathematica до 11
Ян Миллер

URLFetch по-прежнему работает в текущей версии, но в какой-то момент, вероятно, будет полностью устарел, и раньше использовался FetchURL в утилитах URLTools reference.wolfram.com/language/ref/URLFetch.html
Келли Лоудер

4

PowerShell, 7 байт

Так как мы все используем www.ai...

irm ai.

использует Invoke-RestMethod- печатает результат в StdOut

альтернативный ответ, сохраняет в файл с именем 'a' в директории run, используя Invoke-WebRequestи -OutFileparam.

iwr ai. -OutF a

Я собираюсь прикинуть, что irmне будет загружаться any file, как и было запрошено в вопросе, потому что, если сервер вернет json или xml, он вместо этого будет превращен в PSObject. И irm ai.не работает для меня - он говорит, что имя не может быть решено ... Я получаю "$(irm g.cn)"в качестве предложения.
TessellatingHeckler

Хороший вопрос относительно irm- @Джон Хэтвуд - это все еще соответствует требованию или должно быть изменено? Я немного неясен в отношении «любого файла» - он выводит «разобранную» копию любого json или xml, все остальные файлы возвращаются в сыром виде.
Colsw

@TessellatingHeckler, какую версию PS вы используете? у тебя что-нибудь работает nslookup ai.или nslookup www.ai 8.8.8.8?
colsw

Да, он работает с Google DNS, это локальный DNS-сервер Windows, который не может разрешить его. ХОРОШО. PSv4 также, но это не вовлечено, то же самое в приглашении cmd.
TessellatingHeckler

@TessellatingHeckler всегда что-то простое, ага, я подожду, пока автор задания не подтвердит правильность вышеприведенного, но, скорее всего, 15-байтовый iwrответ будет правильным.
colsw

4

C #, 96 93 байта

async()=>Console.Write(await new System.Net.Http.HttpClient().GetStringAsync("http://3.ly"));

Добро пожаловать в PPCG!
Мартин Эндер

Благодарность! Время от времени я прячусь, но мне нужно было повеселиться сегодня c:
Цешион


3

JS (ES6), 38 36 31 29 байт

fetch`//ai`.then(x=>x.text())

В зависимости от консенсуса обещания, (41 байт)

fetch`//ai`.then(x=>x.text()).then(alert)

5
Пока мы не достигнем консенсуса по Обещаниям, я бы сказал, что вам это нужно alert.
Лохматый

@ Shaggy Я думаю, что сообщество соглашается с тем, что этот путь в порядке, смотрите, что подсчет голосов зависит от вашего ответа и моей мета q.
programmer5000

1
10 голосов составляют консенсус? (Подлинный вопрос: сколько голосов нам нужно, чтобы оно считалось ответственным?)
Лохматый

Имеет ли text вернуть обещание или делает ...then(x=>alert(x.text()))работу?
user253751

1
@ Шэгги, сейчас это приемлемо. Консенсус составляет +5 и соотношение 2: 1 до отрицательных голосов.
Rɪᴋᴇʀ

2

R, 24 байта

readLines('http://g.co')

выводит вывод на консоль в обычном формате R - вектор строк, по одному элементу на строку сайта.



2

Python 2, 55 49 47 байт

Не короче, но я действительно думал, что смогу пойти дальше.

from urllib import*
urlopen('http://ai').read

2
Я думаю , что from urllib import*\nurlopen('http://g.co').readэто невалидное как вторая линия неназванная функция (так же , как безымянный лямбда - функция)
овс

@ovs Да, спасибо!
полностью человек

Вы должны удалить висячие скобки. Было бы фрагмент кода вместо часто функция иначе
овс

IOError: [Errno socket error] [Errno 8] nodename nor servname provided, or not known
Юлиан

1
@IulianOnofrei Вы используете TIO? Код, запущенный в TIO, не имеет доступа к Интернету.
полностью человек

1

Команда Vim Ex, 14 байтов

e http://3.ly/

Открывает URL как новый буфер. Netrw серьезно страдает от ограничительного формата URL.


1

nc -v v.ht 80 <файл - 31 байт

Где файл содержит:

GET / HTTP/1.1\r\n
Host: v.ht\r\n
\r\n

Я исповедую невежество о том, как я должен забить это. Файл имеет длину 31 байт и содержит URL-адрес, который я хочу. -vЗначение флага определяет, получу ли я нужный файл или сообщение об ошибке.


nc ai 80<<<GET\ /работает для меня на 18B
Кевин

Я видел, как другие люди использовали это, но это не разрешается на моей машине. Я мог бы найти более разрешающий сервер, но этот нуждается в Hostзначении. Я могу, возможно, удалить последние два \r\nкуплета
JoshRagem

Странно, моя машина не будет разрешать aiдля curlили, wgetно делает для nc. попробуйте ai.(конечная точка) или 3.ly. Это страница с ошибкой, но это все еще в рамках задачи.
Кевин

Хм, если страница ошибки приемлема, то я мог бы отправить тело просто \n. Я попробую еще кое-что, когда вернусь домой
JoshRagem

1

Ракетка, 71 байт

(require net/url)(port->string(get-pure-port(string->url"http://ai")))

Не вижу здесь слишком много ответов о ракетке.
Дэвид Конрад,

0

HTML, 24 байта

<iframe src="http://ai">

Это технически терпит неудачу, поскольку это оказывает результат ...


2
Разве это не STDOUT для HTML? 15 байт:<embed src=//ai
Shaggy

0

Vim, 2 + 12 = 14 байт

gf

Ожидает URL в http://3.ly/качестве ввода. gfоткрывает текущий файл под курсором. Благодаря netrw это прекрасно работает для URL. Я обнаружил это только сейчас, пытаясь запомнить команду для открытия URL-адресов в вашем браузере (нашел, это так gx).


0

PowerShell, 62 байта

PowerShell 5

-join[char[]][net.webclient]::new().downloaddata('http://ai.')

66 байт для более старых версий PowerShell

-join[char[]](new-object net.webclient).downloaddata('http://ai.')

0

Python + запросы, 55 53 50 байт

from requests import*
print(get('http://ai').text)

-2 байта при переключении URL -3 байтов благодаря ovs


Укороченные URL обычно не запрещены?
Лохматый

3
Действительно, это Python + запросы, поскольку запросы (к сожалению) не входят в стандартную библиотеку.
L3viathan

from request import*2 байта короче
овс

@ Шэгги Хм ... Уэлп ... почти каждый второй ответ использовал один разрыв. Но я изменил свой URL-адрес, чтобы сделать его еще короче, потому что, по-видимому http://ai, это действительный полный URL-адрес.
HyperNeutrino

0

AHK , 31 байт

URLDownloadToFile,http://g.co,g

Там есть встроенный, так что это не очень интересно. Попробуй модно, правда, функция довольно длинная.


0

Bash + Wget, 7 байт

wget ai

Загружает страницу по адресу http: // ai


Я получаю сообщение «Не удалось разрешить ... не удалось: имя узла или имя сервера указано или не известно». с этим, хотя wget ai.(с конечной точкой) работает.
Кевин

@Kevin работает в моей системе. Похоже, вы находитесь на FreeBSD или macOS.
дкудрявцев

Да, macOS Sierra
Кевин

@Kevin Я в Linux. Попробуйте ВМ.
дкудрявцев

Странно , что он не будет работать на MacOS, так как он должен быть один и тот же код ( по модулю некоторых ОС-специфические флаги компилятора, которые я бы не ожидать , чтобы изменить это) и nslookup, digи ncвсе находят это хорошо. Ну да ладно, не первое различие, которое я видел, и не стоит устанавливать виртуальную машину для.
Кевин

0

Рубин, 27 + 10 = 37 байт

puts open('http://ai').read

+10 байт для -ropen-uriфлага (требуется библиотека open-uri)


0

Perl, 41 байт

$ perl -MLWP::UserAgent -e 'getstore($url)'

Привет, добро пожаловать на Programing Puzzle & Code-golf, приятно видеть новых игроков в Perl. Вы не можете предполагать, что URL-адрес находится внутри переменной (извините, вы не можете найти ссылочную ссылку на эту часть). Кроме того, вам не нужно считать perl -e''внутри своего счета. О том, как считать флаги и сотрудничество, читайте в этом посте . Увидимся вокруг, я надеюсь!
Дада

0

Pyth , 4 + 11 = 15 байт

jk'z

С URL в http://v.htкачестве ввода. Принимает строку URL в качестве входных данных, загружает файл и печатает его содержимое.

Объяснение:

jk'z
   z    Get the input string (URL)
  '     Download the file from the URL, return a list of lines
jk      Join the list on k which is the empty string

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

Немного обмана, 2 + 11 = 13 байт (он отображает список строк в файле вместо одной строки для всего файла):

'z

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


Добро пожаловать в PPCG! Довольно хорошо, но «URL должен считаться до байтов».
Джонатан Аллан


0

MATLAB, 20 байтов

urlread('http://ai')

Ничего особенного здесь ...


0

Kdb +, 34 15 байт

KDB +> = 3,4

 q).Q.hg`http://ai

от сюда .

КДБ + <3,4

q)`:http://ai"GET / HTTP/1.0",4#"\n"
"HTTP/1.1 200 OK\r\nDate: Thu, 11 May 2017 21:45:01 GMT\r\nServer: Apache/1.3..
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.