ดาวน์โหลดไฟล์จากอินเทอร์เน็ต


21

บทนำ

ใช่มันง่ายอย่างนั้น ดาวน์โหลดไฟล์ใด ๆ จากอินเทอร์เน็ต!

กฎระเบียบ

คุณต้องใช้ API ของภาษาของคุณ

คุณต้องส่งออกไฟล์ที่คุณดาวน์โหลดไปยัง STDOUT คอนโซลไฟล์ ฯลฯ

ข้อมูลที่ป้อนควรจะว่างเปล่าหรือ URL ที่คุณต้องการดาวน์โหลด แต่ URL จะต้องนับเป็นจำนวนไบต์ ..

โชคดี!

คำตอบ:


14

Bash, 21 17 11 9 7 ไบต์

curl ai

1
curlไม่ใช่เครื่องมือที่มีอยู่แล้ว? :)
Abel Tom

1
@AbelTom นี่คือ "API ของภาษาของคุณ"
programmer5000

7
curl aiไม่จำเป็นต้อง http: //
opatut

1
@SIGSEGV: เพราะที่ไม่ได้ส่งออกไปยังstdout
การแข่งขัน Lightness กับโมนิก้า

2
มันใช้งานไม่ได้สำหรับฉัน สิ่งที่aiควรจะเป็น? ให้curl: (6) Could not resolve host: aiที่นี่
Rɪᴋᴇʀ

13

Röda , 29 ไบต์

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

นี้เป็นฟังก์ชั่นที่ไม่ระบุชื่อที่จะสร้างไฟล์ที่aมีรหัส HTML http://aiของ


1
ตอนนี้เพื่อโน้มน้าวให้พวกเขาเรียกใช้เซิร์ฟเวอร์ FTP ...
253751

1
URL นั้นใช้ได้อย่างไร
Iulian Onofrei

1
@IulianOnofrei ทำไมมันไม่ถูกต้อง? มันมีโปรโตคอลชื่อโฮสต์และไม่มีพอร์ตเส้นทางหรือสตริงการสืบค้น แต่เป็นตัวเลือกทั้งหมด คุณกำลังถามว่าทำไม ai เป็นชื่อโฮสต์ที่ถูกต้องหรือไม่
user253751

1
@IulianOnofrei ai เป็น TLD โดยปกติ TLDs จะไม่แก้ไขที่อยู่เว็บไซต์โฮสต์นั้น แต่ดูเหมือนว่าสิ่งนี้จะทำ
user253751

4
สำหรับผู้ที่ชอบฉัน - URL ไม่ได้รับการแก้ไขคุณสามารถดูได้โดยใช้ที่อยู่ IP โดยตรง: 209.59.119.34
Engineer Toast

6

MATL, 8 ไบต์

'v.ht'Xi

URL ที่มอบให้กับXi( urlread) จะถูกต่อท้ายด้วยhttp://หากยังไม่มีอยู่ นอกจากนี้ผลลัพธ์ของurlreadมีเนื้อหาของการตอบสนองและนี่คือการพิมพ์โดยปริยายเมื่อโปรแกรมออก

น่าเสียดายที่วิธีนี้ใช้ไม่ได้กับคอมไพเลอร์ออนไลน์เนื่องจากการโหลดข้อมูลจาก URL ที่กำหนดเองไม่ได้รับอนุญาตในโหมดออนไลน์ดังนั้นนี่คือ GIF ป้อนคำอธิบายรูปภาพที่นี่


5

ทุบตี, 45 43 ไบต์

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

เปิดซ็อกเก็ต tcp กับไซต์ ai บนไฟล์ descriptor 3, รับและส่งผลลัพธ์ อาจจะสามารถเล่นกอล์ฟต่อไปได้


1
คุณสามารถลบคำพูดสองรอบ" GET /
Digital Trauma

! ที่น่าตื่นตาตื่นใจ นี่เป็นสิ่งที่ดีมากแม้ว่ามันจะไม่สั้นก็ตาม
John Hathwood

4

Mathematica 18 Bytes

URLDownload@"v.ht"

ฉันคิดว่าFetchURLใช้ได้
ngenisis

คิดว่าคุณหมายถึงURLFetchเวอร์ชั่นของ Mathematica ก่อนวันที่ 11
Ian Miller

URLFetch ยังคงใช้งานได้ในเวอร์ชันปัจจุบัน แต่ในบางจุดอาจจะถูกคัดค้านอย่างสมบูรณ์และมีการใช้งานเป็น FetchURL ในโปรแกรมอรรถประโยชน์URLTools reference.wolfram.com/language/ref/URLFetch.html
Kelly Lowder

4

PowerShell ขนาด 7 ไบต์

เนื่องจากเราทุกคนใช้www.ai...

irm ai.

ใช้Invoke-RestMethod- พิมพ์ผลลัพธ์ไปที่ StdOut

คำตอบอื่น, บันทึกเป็นไฟล์ชื่อ 'a' ในไดเรกทอรีที่ใช้, ใช้Invoke-WebRequestและ-OutFileพารามิเตอร์

iwr ai. -OutF a

ฉันจะไป nitpick ที่irmจะไม่ดาวน์โหลดany fileตามที่ขอในคำถามเพราะถ้าเซิร์ฟเวอร์คืน json หรือ xml มันจะกลายเป็น PSObject แทน และirm ai.ใช้งานไม่ได้สำหรับฉัน - มันบอกว่าไม่สามารถแก้ไขชื่อได้ ... ฉันได้รับ"$(irm g.cn)"เป็นข้อเสนอแนะ
TessellatingHeckler

จุดที่ดีเกี่ยวกับirm- @John Hathwood - สิ่งนี้ยังเหมาะกับความท้าทายหรือจำเป็นต้องเปลี่ยนหรือไม่? ฉันไม่ชัดเจนเกี่ยวกับ 'ไฟล์ใด ๆ ' - มันส่งออกสำเนา 'แจง' ของ json หรือ xml ใด ๆ ไฟล์อื่น ๆ ทั้งหมดจะถูกส่งกลับดิบ
colsw

@TessellatingHeckler คุณใช้ PS รุ่นใดอยู่ คุณจะได้รับสิ่งที่ทำงานnslookup ai.หรือnslookup www.ai 8.8.8.8?
colsw

ใช่มันทำงานกับ Google DNS ได้และเป็นเซิร์ฟเวอร์ DNS ของ Windows ภายในที่ไม่สามารถแก้ไขได้ ตกลง. PSv4 เช่นกัน แต่นั่นไม่เกี่ยวข้องเหมือนกันที่พรอมต์คำสั่ง
TessellatingHeckler

@TessellatingHeckler ทุกอย่างง่าย ๆ aha ฉันจะรอผู้เขียนที่ท้าทายเพื่อยืนยันว่าข้างต้นก็โอเค แต่ส่วนใหญ่แล้วiwrคำตอบ15 ไบต์จะเป็นคำตอบที่ถูกต้อง
colsw

4

C #, 96 93 ไบต์

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

ยินดีต้อนรับสู่ PPCG!
Martin Ender

ขอบคุณ! ฉันแฝงตัวอยู่เป็นครั้งคราว แต่ฉันต้องการความสนุกสนานในวันนี้ c:
Ceshion


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

@Shaggy ฉันคิดว่าชุมชนยอมรับว่าวิธีนี้ใช้ได้ดูการนับคะแนนสำหรับคำตอบของคุณและ meta q ของฉัน
programmer5000

1
ทำ 10 โหวตฉันทามติทำ? (คำถามของแท้ที่ว่าเราต้องโหวตกี่ครั้งจึงจะถือว่าเหมาะสม)
Shaggy

ไม่textกลับมาสัญญาหรือไม่...then(x=>alert(x.text()))ทำงานหรือไม่
user253751

1
@Shaggy เป็นที่ยอมรับในขณะนี้ ฉันทามติคือ +5 และ 2: 1 อัตราส่วนสูงถึง downvotes
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

@ovs Huh ขอบคุณ!
ทั้งหมด

คุณต้องลบวงเล็บต่อท้าย มันจะเป็นความ snippet แทนผู้ทรงฟังก์ชั่นอย่างอื่น
OVS

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

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")))

อย่าเห็นคำตอบของแร็กเก็ตมากเกินไปที่นี่
David Conrad

0

HTML, 24 ไบต์

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

เทคนิคนี้ล้มเหลวเนื่องจากแสดงผล ...


2
นั่นไม่ใช่ STDOUT สำหรับ HTML ใช่ไหม 15 ไบต์:<embed src=//ai
Shaggy

0

เป็นกลุ่ม 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 bytes โดยเปลี่ยน URLs -3 bytes ขอบคุณ ovs


มักจะไม่อนุญาตให้ใช้ URL ที่สั้นลง
Shaggy

3
จริงๆแล้วนั่นเป็นคำขอของ Python + เนื่องจากคำขอนั้น (เศร้า) ไม่ได้อยู่ในไลบรารีมาตรฐาน
L3viathan

from request import*สั้นลง 2 ไบต์
ovs

@Shaggy อืม ... อืม ... ทุกคำตอบอื่น ๆ ใช้การริพครั้งเดียว แต่ผมเปลี่ยน URL ของฉันที่จะทำให้มันยิ่งสั้นลงเพราะเห็นได้ชัดว่าhttp://aiเป็น URL แบบเต็มถูกต้อง ..
HyperNeutrino


0

Bash + wget, 7 ไบต์

wget ai

ดาวน์โหลดหน้าได้ที่http: // ai


ฉันได้รับ "การแก้ปัญหา ai ... ล้มเหลว: nodename หรือ servname ที่ให้ไว้หรือไม่ทราบ" ด้วยวิธีนี้แม้ว่าwget ai.(มีจุดต่อท้าย) จะทำงานได้
เควิน

@ Kevin ทำงานบนระบบของฉัน ดูเหมือนว่าคุณใช้ FreeBSD หรือ macOS
dkudriavtsev

ใช่ macOS Sierra
Kevin

@ เควินฉันบน Linux ลองใช้ VM
dkudriavtsev

แปลกที่มันจะไม่ทำงานใน MacOS ตั้งแต่มันควรจะเป็นรหัสเดียวกัน (modulo บาง OS เฉพาะธงคอมไพเลอร์ซึ่งผมจะไม่คาดหวังที่จะเปลี่ยนแปลงนี้) และnslookup, digและncทั้งหมดพบว่ามันปรับ ไม่ใช่ความแตกต่างแรกที่ฉันเห็นและไม่คุ้มค่าที่จะติดตั้ง vm
เควิน

0

Ruby, 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''ใน bytecount ของคุณ เกี่ยวกับวิธีนับธง & co ดูโพสต์นี้ เจอกันรอบ ๆ ฉันหวังว่า!
Dada

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 จะต้องนับเป็นจำนวนไบต์"
Jonathan Allan



0

Kdb +, 34 15 ไบต์

KDB +> = 3.4

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

จากที่นี่

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..
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.