Tải xuống một tập tin từ Internet


21

Giới thiệu

Vâng, nó đơn giản như vậy. Tải xuống bất kỳ tập tin từ internet!

Quy tắc

Bạn phải sử dụng API ngôn ngữ của bạn.

Bạn phải xuất tệp bạn đã tải xuống STDOUT, bảng điều khiển, tệp, v.v.

Đầu vào phải trống hoặc URL bạn muốn tải xuống, nhưng url phải được tính theo số byte ..

Chúc may mắn!

Câu trả lời:


14

Bash, 21 17 11 9 7 byte

curl ai

1
curlkhông phải là một công cụ đã tồn tại? :)
Abel Tom

1
@AbelTom đây là "API ngôn ngữ của bạn"
lập trình

7
curl aikhông cần http: //
opatut

1
@SIGSEGV: Bởi vì điều đó không xuất ra thiết bị xuất chuẩn .
Cuộc đua nhẹ nhàng với Monica

2
Điều này không làm việc cho tôi? Những gì aiđược cho là? Tặng curl: (6) Could not resolve host: aiở đây.
Rɪᴋᴇʀ

13

Röda , 29 byte

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

Đây là một hàm ẩn danh tạo ra một tệp achứa mã HTML của http://ai.


1
Bây giờ để thuyết phục họ chạy máy chủ FTP ...
user253751

1
Làm thế nào là url hợp lệ?
Iulian Onofrei

1
@IulianOnofrei Tại sao nó không hợp lệ? Nó có một giao thức, tên máy chủ và không có cổng, đường dẫn hoặc chuỗi truy vấn nhưng tất cả đều là tùy chọn. Bạn đang hỏi tại sao ai là tên máy chủ hợp lệ?
dùng253751

1
@IulianOnofrei ai một TLD. Thông thường các TLD không giải quyết các địa chỉ lưu trữ trang web, nhưng điều này rõ ràng là có.
dùng253751

4
Đối với những người - như tôi - URL không giải quyết, có lẽ bạn có thể xem nó bằng cách sử dụng trực tiếp địa chỉ IP: 209.59.119.34
Kỹ sư Toast

6

MATL, 8 byte

'v.ht'Xi

URL được cung cấp cho Xi( urlread) được thêm vào http://nếu chưa có. Ngoài ra, đầu ra urlreadchứa nội dung của phản hồi và điều này được in ngầm khi chương trình thoát.

Thật không may, điều này không hoạt động đối với các trình biên dịch trực tuyến do việc tải dữ liệu từ một URL tùy ý không được phép trong chế độ trực tuyến, vì vậy đây là một GIF. nhập mô tả hình ảnh ở đây


5

Bash, 45 43 byte

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

mở một ổ cắm tcp với trang web ai trên mô tả tệp 3, đưa ra kết quả và lấy kết quả. có lẽ có thể được chơi golf hơn nữa.


1
Bạn có thể loại bỏ các dấu ngoặc kép "xung quanh GET /.
Chấn thương kỹ thuật số

Kinh ngạc! Điều này là rất tốt, ngay cả khi nó không phải là ngắn nhất.
John Hathwood

4

Toán học 18 byte

URLDownload@"v.ht"

Tôi nghĩ rằng FetchURLhoạt động
ngenisis

Hãy nghĩ rằng bạn có nghĩa là URLFetchcần một phiên bản Mathicala trước 11.
Ian Miller

URLFetch vẫn hoạt động trong phiên bản hiện tại nhưng đến một lúc nào đó có thể sẽ bị phản đối hoàn toàn và đã từng sử dụng FetchURL trong Tiện ích URLTools tham
Kelly Lowder

4

PowerShell, 7 byte

Vì tất cả chúng ta đều sử dụng www.ai...

irm ai.

sử dụng Invoke-RestMethod- in kết quả ra StdOut

câu trả lời thay thế, lưu vào tệp có tên 'a' trong thư mục chạy, sử dụng Invoke-WebRequest-OutFileparam.

iwr ai. -OutF a

Tôi irmsẽ tải xuống nitpick mà sẽ không tải xuống any file, như được yêu cầu trong câu hỏi, bởi vì nếu máy chủ trả về json hoặc xml, nó sẽ được chuyển thành PSObject thay thế. Và irm ai.nó không hoạt động đối với tôi - nó nói rằng tên không thể được giải quyết ... Tôi nhận được "$(irm g.cn)"như một gợi ý.
TessellatingHeckler

điểm tốt liên quan đến irm- @John Hathwood - điều này vẫn phù hợp với thách thức hay cần phải thay đổi? Tôi không rõ ràng về 'bất kỳ tệp nào' - nó xuất ra một bản sao 'được phân tích cú pháp' của bất kỳ json hoặc xml nào, tất cả các tệp khác được trả về thô.
colsw

@TessellatingHeckler bạn đang sử dụng phiên bản PS nào? bạn có nhận được gì khi chạy nslookup ai.hay nslookup www.ai 8.8.8.8không?
colsw

Đúng vậy, nó hoạt động truy vấn dựa trên Google DNS, đó là máy chủ DNS Windows cục bộ không thể giải quyết nó. ĐƯỢC. PSv4 cũng vậy, nhưng điều đó không liên quan, tương tự tại dấu nhắc cmd.
TessellatingHeckler

@TessellatingHeckler luôn luôn là một cái gì đó đơn giản, tôi sẽ chờ tác giả thách thức xác nhận xem điều trên có ổn không, nhưng rất có thể iwrcâu trả lời 15 byte sẽ là câu trả lời đúng.
colsw

4

C #, 96 93 byte

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

Chào mừng đến với PPCG!
Martin Ender

Cảm ơn! Thỉnh thoảng tôi ẩn nấp nhưng tôi cần một số niềm vui ngày hôm nay c:
Ceshion

3

PHP, 22 byte

Nếu allow_url_include=1có trong tập tin ini của bạn:

<?=include"http://ai";   

3

JS (ES6), 38 36 31 29 byte

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

Tùy thuộc vào sự đồng thuận lời hứa, (41 byte)

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

5
Cho đến khi chúng tôi đạt được sự đồng thuận về Lời hứa, tôi sẽ nói bạn sẽ cần alertđiều này.
Xù xì

@Shaggy Tôi nghĩ rằng cộng đồng đồng ý rằng cách này là ổn, hãy xem phiếu bầu dựa trên câu trả lời của bạn và meta q của tôi.
lập trình

1
Làm 10 phiếu một sự đồng thuận? (Câu hỏi chính xác rằng, chúng ta cần bao nhiêu phiếu để được coi là có thể chấp nhận được?)
Shaggy

texttrả lại một lời hứa hoặc không ...then(x=>alert(x.text()))làm việc?
dùng253751

1
@Shaggy bây giờ có thể chấp nhận được. Sự đồng thuận là tỷ lệ +5 và 2: 1 của upvote.
Rɪᴋᴇʀ

2

R, 24 byte

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

in đầu ra ra bàn điều khiển ở định dạng R thông thường - vectơ của chuỗi, một phần tử trên mỗi dòng của trang web.



2

Python 2, 55 49 47 byte

Không ngắn hơn nhưng tôi thực sự nghĩ rằng tôi có thể đi xa hơn.

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

2
Tôi nghĩ from urllib import*\nurlopen('http://g.co').readlà một đệ trình hợp lệ vì dòng thứ hai là một hàm không tên (giống như một hàm lambda không tên)
ovs

@ovs Huh, cảm ơn!
hoàn toàn là

Bạn cần loại bỏ dấu ngoặc. Nó sẽ là một đoạn thay vì một chức năng khác
ovs

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

1
@IulianOnofrei Bạn đang sử dụng TIO? Mã chạy trong TIO không có quyền truy cập vào internet.
hoàn toàn là

1

Lệnh Vim Ex, 14 byte

e http://3.ly/

Mở URL dưới dạng bộ đệm mới. Netrw nghiêm túc chịu một định dạng URL hạn chế.


1

nc -v v.html 80 <file - 31 byte

Nơi chứa tập tin:

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

Tôi tuyên bố không biết gì về cách tôi nên ghi điểm này. Tệp có 31 byte và chứa URL tôi muốn, -vgiá trị cờ quyết định nếu tôi nhận được tệp tôi muốn hoặc phản hồi lỗi.


nc ai 80<<<GET\ /làm việc cho tôi trong 18B
Kevin

Tôi thấy những người khác sử dụng nó nhưng nó không giải quyết trên máy của tôi. Tôi có thể tìm thấy một máy chủ dễ dãi hơn nhưng máy chủ này cần Hostgiá trị. Tôi có thể có thể loại bỏ hai cuối cùng \r\ncâu đối
JoshRagem

Odd, máy của tôi sẽ không giải quyết aicho curlhay wgetnhưng không cho nc. thử ai.(dấu chấm), hoặc 3.ly. Đó là một trang lỗi, nhưng đó vẫn nằm trong giới hạn của thử thách.
Kevin

Hmm, nếu trang lỗi được chấp nhận thì tôi có thể gửi một cơ thể chỉ \n. Tôi sẽ thử một số thứ nữa khi tôi về nhà
JoshRagem

1

Vợt, 71 byte

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

Đừng thấy quá nhiều câu trả lời vợt quanh đây.
David Conrad

0

HTML, 24 byte

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

Điều này về mặt kỹ thuật thất bại vì nó làm cho kết quả ...


2
Đó không phải là STDOUT cho HTML? 15 byte:<embed src=//ai
Xù xì

0

Vim, 2 + 12 = 14 byte

gf

Yêu cầu URL http://3.ly/là đầu vào. gfmở tập tin hiện tại dưới con trỏ. Nhờ netrw, điều này hoạt động tốt cho các URL. Tôi vừa tìm thấy điều này trong khi cố gắng nhớ lệnh mở URL trong trình duyệt của bạn (tìm thấy nó, nó gx).


0

PowerShell, 62 byte

PowerShell 5

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

66 byte cho các phiên bản cũ hơn của PowerShell

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

0

Yêu cầu Python +, 55 53 50 byte

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

-2 byte bằng cách chuyển URL -3 byte nhờ vào các ô


URL không được rút ngắn thường không được phép?
Xù xì

3
Thực sự, đó là các yêu cầu Python +, vì các yêu cầu (đáng buồn thay) không có trong thư viện chuẩn.
L3viathan

from request import*ngắn hơn 2 byte
ovs

@Shaggy Um ... Welp ... khá nhiều câu trả lời khác được sử dụng một lần rip. Nhưng tôi đã thay đổi URL của mình để làm cho nó thậm chí ngắn hơn vì rõ ràng http://ailà một URL đầy đủ hợp lệ ..
HyperNeutrino

0

AHK , 31 byte

URLDownloadToFile,http://g.co,g

Có tích hợp sẵn nên không thú vị lắm. Cố gắng thời trang, mặc dù, chức năng là khá dài.


0

Bash + wget, 7 byte

wget ai

Tải trang tại http: // ai


Tôi nhận được "Giải quyết ai ... thất bại: tên nút cũng như tên dịch vụ được cung cấp hoặc không được biết." với điều này, mặc dù wget ai.(với một dấu chấm) hoạt động.
Kevin

@Kevin Hoạt động trên hệ thống của tôi. Âm thanh như bạn đang trên FreeBSD hoặc macOS.
dkudriavtsev

Có, macOS Sierra
Kevin

@Kevin Tôi đang dùng Linux. Hãy thử một máy ảo.
dkudriavtsev

Odd rằng nó không phải sẽ làm việc trên hệ điều hành MacOS, vì nó phải cùng mã (modulo một số cờ biên dịch os-cụ thể, mà tôi sẽ không mong đợi để thay đổi điều này) và nslookup, dignctất cả thấy nó tốt. Ồ, không phải sự khác biệt đầu tiên tôi thấy, và không đáng để cài đặt một vm cho.
Kevin

0

Ruby, 27 + 10 = 37 byte

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

+10 byte cho -ropen-uricờ (để yêu cầu thư viện uri mở)


0

Perl, 41 byte

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

Xin chào, chào mừng bạn đến với Lập trình Puzzle & Code-golf, rất vui khi thấy những người chơi gôn Perl mới xung quanh. Bạn không được phép giả sử rằng url nằm trong một biến (không thể tìm cho bạn một liên kết tham chiếu về phần đó, xin lỗi). Hơn nữa, bạn không phải tính perl -e''bên trong số tiền của bạn. Về cách đếm cờ & đồng, xem bài này . Nhìn thấy bạn xung quanh tôi hy vọng!
Dada

0

Bình thường , 4 + 11 = 15 byte

jk'z

Với URL http://v.htlà đầu vào. Lấy một chuỗi URL làm đầu vào, tải xuống tệp và in nội dung của nó.

Giải trình:

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

Lưu ý rằng chúng ta không thể sử dụng chức năng s để nối danh sách vì các vấn đề về kiểu byte.

Gian lận một chút, 2 + 11 = 13 byte (nó hiển thị danh sách các dòng trong tệp thay vì một chuỗi cho toàn bộ tệp):

'z

Bạn sẽ cần cài đặt Pyth trên máy của mình để kiểm tra (trình thông dịch trực tuyến không thực hiện các hoạt động không an toàn).


Chào mừng đến với PPCG! Khá tốt, nhưng "url phải tính đến số byte".
Jonathan Allan

0

C #, 76 byte

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

0

MATLAB, 20 byte

urlread('http://ai')

Không có gì lạ mắt ở đây ...


0

Kdb +, 34 15 byte

KDB +> = 3,4

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

từ đây .

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..
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.