Descargar un archivo de Internet


21

Introducción

Sí, es tan simple como eso. Descargar cualquier archivo de internet!

Reglas

Debe usar la API de su idioma.

Debe enviar el archivo que descargó a STDOUT, la consola, un archivo, etc.

La entrada debe estar vacía o la URL que desea descargar, pero la URL debe contar para contar los bytes.

¡Buena suerte!

Respuestas:



13

Röda , 29 bytes

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

Esta es una función anónima que crea un archivo que acontiene el código HTML de http://ai.


1
Ahora para convencerlos de que ejecuten un servidor FTP ...
user253751

1
¿Cómo es válida esa url?
Iulian Onofrei

1
@IulianOnofrei ¿Por qué no sería válido? Tiene un protocolo, un nombre de host y ningún puerto, ruta o cadena de consulta, pero todos son opcionales. ¿Estás preguntando por qué ai es un nombre de host válido?
user253751

1
@IulianOnofrei ai es un TLD. Por lo general, los TLD no resuelven las direcciones que alojan sitios web, pero este aparentemente sí.
user253751

44
Para aquellos que, como yo, la URL no se resuelve, probablemente puedan verla usando la dirección IP directamente: 209.59.119.34
Engineer Toast

6

MATL, 8 bytes

'v.ht'Xi

La URL proporcionada a Xi( urlread) se antepone http://si aún no lo está. Además, la salida de urlreadcontiene el contenido de la respuesta y esto se imprime implícitamente cuando el programa sale.

Desafortunadamente, esto no funciona para los compiladores en línea, ya que la carga de datos desde una URL arbitraria no está permitida en modo en línea, así que aquí hay un GIF. ingrese la descripción de la imagen aquí


5

Golpetazo, 45 43 bytes

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

abre un zócalo tcp con un sitio ai en el descriptor de archivo 3, emite un get y captura el resultado. tal vez se pueda jugar más al golf.


1
Puede quitar las comillas dobles "alrededor GET /.
Trauma digital

¡Asombroso! Esto es muy bueno, incluso si no es el más corto.
John Hathwood


4

PowerShell, 7 bytes

Como todos estamos usando www.ai...

irm ai.

usos Invoke-RestMethod: imprime el resultado en StdOut

respuesta alternativa, guarda en el archivo llamado 'a' en el directorio de ejecución, usando Invoke-WebRequesty -OutFileparam.

iwr ai. -OutF a

Voy a hacer un nitpick que irmno se descargará any file, como se solicitó en la pregunta, porque si el servidor devuelve json o xml, se convertirá en un PSObject. Y irm ai.no funciona para mí, dice que el nombre no se puede resolver ... Lo recibo "$(irm g.cn)"como una sugerencia.
TessellatingHeckler

buen punto con respecto a irm@John Hathwood: ¿esto aún se ajusta al desafío o necesita ser cambiado? no estoy claro sobre 'cualquier archivo': genera una copia 'analizada' de cualquier json o xml, todos los demás archivos se devuelven sin formato.
colsw

@TessellatingHeckler ¿qué versión de PS estás usando? ¿Tienes algo corriendo nslookup ai.o nslookup www.ai 8.8.8.8?
colsw

Sí, funciona consultando contra DNS de Google, es un servidor DNS local de Windows que no puede resolverlo. OKAY. PSv4 también, pero eso no está involucrado, lo mismo en un indicador de cmd.
TessellatingHeckler

@TessellatingHeckler siempre es algo simple aha, esperaré a que el autor del desafío confirme si lo anterior está bien, pero lo más probable es que la iwrrespuesta de 15 bytes sea ​​la correcta.
colsw

4

C #, 96 93 bytes

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

Bienvenido a PPCG!
Martin Ender

¡Gracias! Me acecho de vez en cuando pero necesitaba algo de diversión hoy c:
Ceshion


3

JS (ES6), 38 36 31 29 bytes

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

Dependiendo del consenso de la promesa, (41 bytes)

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

55
Hasta que lleguemos a un consenso sobre las promesas, diría que necesitarás alertesto.
Shaggy

@ Shaggy Creo que la comunidad está de acuerdo en que de esta manera está bien, ver el voto cuenta con su respuesta y mi meta q.
programador

1
¿10 votos hacen un consenso? (Pregunta genuina que; ¿cuántos votos necesitamos para que se considere aceptable?)
Shaggy

¿ textDevuelve una promesa o ...then(x=>alert(x.text()))funciona?
user253751

1
@ Shaggy es aceptable ahora. El consenso es una relación de +5 y 2: 1 de hasta votos a favor.
Rɪᴋᴇʀ

2

R, 24 bytes

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

imprime la salida a la consola en el formato R habitual: vector de cadenas, un elemento por línea del sitio.



2

Python 2, 55 49 47 bytes

No más corto, pero realmente pensé que podría ir más allá.

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

2
Creo que from urllib import*\nurlopen('http://g.co').reades una presentación válida ya que la segunda línea es una función sin nombre (al igual que una función lambda sin nombre)
2017

@ovs Huh, gracias!
Totalmente humano

Debe quitar los corchetes finales. Sería un fragmento lugar a menudo una función de otra manera
ovs

IOError: [Errno socket error] [Errno 8] nodename nor servname provided, or not known
Iulian Onofrei

1
@IulianOnofrei ¿Estás usando TIO? El código ejecutado en TIO no tiene acceso a Internet.
Totalmente humano

1

Comando Vim Ex, 14 bytes

e http://3.ly/

Abre la URL como un nuevo búfer. Netrw sufre gravemente de un formato de URL restrictivo.


1

nc -v v.ht 80 <archivo - 31 bytes

Donde el archivo contiene:

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

Profeso ignorancia sobre cómo debería calificar esto. El archivo tiene 31 bytes y contiene la URL que quiero, el -vvalor del marcador decide si obtengo el archivo que quiero o si aparece una respuesta de error.


nc ai 80<<<GET\ /funciona para mí para 18B
Kevin

Vi a otras personas usar eso, pero no se resuelve en mi máquina. Es posible que pueda encontrar un servidor más permisivo, pero este necesita el Hostvalor. \r\n
Tal

Impar, mi máquina no resolvería aipara curlo wgetpero lo hace para nc. intente ai.(punto final), o 3.ly. Es una página de error, pero todavía está dentro de los límites del desafío.
Kevin

Hmm, si la página de error es aceptable, podría enviar un cuerpo de solo \n. Intentaré algunas cosas más cuando llegue a casa
JoshRagem

1

Raqueta, 71 bytes

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

No veo demasiadas respuestas Racket por aquí.
David Conrad

0

HTML, 24 bytes

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

Esto técnicamente falla ya que genera el resultado ...


2
¿No es STDOUT para HTML? 15 bytes:<embed src=//ai
Shaggy

0

Vim, 2 + 12 = 14 bytes

gf

Espera la URL http://3.ly/como entrada. gfabre el archivo actual debajo del cursor. Gracias a netrw, esto funciona bien para las URL. Encontré esto justo ahora mientras intentaba recordar el comando para abrir URL en su navegador (lo encontré, es gx).


0

PowerShell, 62 bytes

PowerShell 5

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

66 bytes para versiones más antiguas de PowerShell

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

0

Python + solicitudes, 55 53 50 bytes

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

-2 bytes cambiando URL -3 bytes gracias a ovs


¿Por lo general, no se rechazan las URL acortadas?
Shaggy

3
Realmente, esas son solicitudes de Python +, ya que las solicitudes (lamentablemente) no están en la biblioteca estándar.
L3viathan

from request import*es 2 bytes más corto
ovs

@Shaggy Um ... Welp ... casi todas las otras respuestas usaron una rasgadura. Pero cambié mi URL para hacerlo aún más corto porque aparentemente http://aies una URL completa válida ...
HyperNeutrino

0

AHK , 31 bytes

URLDownloadToFile,http://g.co,g

Hay una función incorporada, por lo que no es muy emocionante. Sin embargo, intenta modelar, la función es bastante larga.


0

Bash + wget, 7 bytes

wget ai

Descarga la página en http: // ai


Aparece el mensaje "Resolviendo ai ... falló: nombre de servidor ni nombre de servidor proporcionados, o no se conocen". con esto, sin embargo wget ai.(con un punto final) funciona.
Kevin

@ Kevin funciona en mi sistema. Parece que estás en FreeBSD o macOS.
dkudriavtsev

Sí, macOS Sierra
Kevin

@ Kevin Estoy en Linux. Prueba una VM.
dkudriavtsev

Extraño que no funcionaría en MacOS, ya que debe ser el mismo código (dadas algunas opciones del compilador-os específica, que yo no esperaría para cambiar esto) y nslookup, digy nctodos se encuentran bien. Oh, bueno, no es la primera diferencia que he visto, y no vale la pena instalar un VM.
Kevin

0

Rubí, 27 + 10 = 37 bytes

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

+10 bytes para el -ropen-uriindicador (para requerir la biblioteca open-uri)


0

Perl, 41 bytes

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

Hola, bienvenido a Programing Puzzle & Code-golf, me alegro de ver nuevos golfistas de Perl. No está permitido suponer que la url está dentro de una variable (no puedo encontrar un enlace de referencia sobre esa parte, lo siento). Además, no tiene que contar perl -e''dentro de su bytecount. Sobre cómo contar flags & co, mira esta publicación . Nos vemos, espero!
Dada

0

Pyth , 4 + 11 = 15 bytes

jk'z

Con URL http://v.htcomo entrada. Toma una cadena de URL como entrada, descarga el archivo e imprime su contenido.

Explicación:

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

Tenga en cuenta que no podemos usar la función spara concatenar la lista debido a problemas con los tipos de bytes.

Ligeramente trampa, 2 + 11 = 13 bytes (muestra la lista de líneas en el archivo en lugar de una sola cadena para todo el archivo):

'z

Deberá instalar Pyth en su máquina para probarlo (el intérprete en línea no ejecuta operaciones inseguras).


Bienvenido a PPCG! Bastante bien, pero "la url debe contar para contar los bytes".
Jonathan Allan

0

C #, 76 bytes

Console.WriteLine(new System.Net.WebClient().DownloadString("http://3.ly"));

0

MATLAB, 20 bytes

urlread('http://ai')

Nada lujoso aquí ...


0

Kdb +, 34 15 bytes

KDB +> = 3.4

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

desde aquí .

KDB + <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..
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.