ดาวน์โหลด URL ที่อยู่ในไฟล์โดยใช้ curl? [ปิด]


15

ฉันมีไฟล์ที่มี URL ทั้งหมดที่ฉันต้องดาวน์โหลด อย่างไรก็ตามฉันจำเป็นต้อง จำกัด การดาวน์โหลดครั้งละหนึ่งรายการ เช่นการดาวน์โหลดครั้งต่อไปควรเริ่มเพียงครั้งเดียวก่อนหน้านี้จะเสร็จ เป็นไปได้โดยใช้ขด? หรือฉันควรใช้สิ่งอื่น


3
สวัสดีและยินดีต้อนรับสู่ serverfault เมื่อถามคำถามในเว็บไซต์นี้โปรดจำไว้เสมอว่าเราไม่ได้อยู่ในสถานที่ของคุณและไม่สามารถคาดเดาสภาพแวดล้อมที่คุณใช้ ในกรณีนี้คุณไม่ได้ระบุว่าคุณใช้ระบบปฏิบัติการใดซึ่งจะทำให้การตอบคุณยาก
Stephane

คำตอบ:


20
xargs -n 1 curl -O < your_files.txt

2
นี่คือคำตอบที่ดีที่สุด แม้ว่าผู้ถามจะไม่ได้ระบุ แต่ก็น่าจะถือว่าการตอบสนองสำหรับ URL ทั้งหมดควรถูกเขียนลงในไฟล์แต่ละไฟล์ ใช้-Oตัวเลือกกับ cURL เพื่อทำเช่นนั้น xargs -n 1 curl -O < your_file.txt
LS

ฉันเห็นด้วย. แก้ไขแล้ว
Grumdrig

นี่คือสิ่งที่ฉันต้องการจริงๆ
vu ledang

19

wget(1) ทำงานตามลำดับโดยค่าเริ่มต้นและมีตัวเลือกนี้ในตัว:

   -i file
   --input-file=file
       Read URLs from a local or external file.  If - is specified as file, URLs are read from the standard input.  (Use ./- to read from a file literally named -.)

       If this function is used, no URLs need be present on the command line.  If there are URLs both on the command line and in an input file, those on the command lines will be the first ones to be retrieved.  If
       --force-html is not specified, then file should consist of a series of URLs, one per line.

       However, if you specify --force-html, the document will be regarded as html.  In that case you may have problems with relative links, which you can solve either by adding "<base href="url">" to the documents
       or by specifying --base=url on the command line.

       If the file is an external one, the document will be automatically treated as html if the Content-Type matches text/html.  Furthermore, the file's location will be implicitly used as base href if none was
       specified.

3
เนื่องจากผู้ถามต้องการทราบวิธีการใช้ cURL อย่างน้อยคุณควรมีวิธีแก้ปัญหาที่พยายามใช้
LS

4

สิ่งนี้เป็นไปได้โดยใช้ curl ภายในเชลล์สคริปต์สิ่งนี้ แต่คุณจะต้องทำการวิจัยตัวเลือกที่เหมาะสมสำหรับ curl และอื่น ๆ ด้วยตัวคุณเอง

while read URL
    curl some options $URL
    if required check exit status 
          take appropriate action
done <fileontainingurls

2
ฉันเข้าใจว่านี่เป็นครึ่งปลอม แต่ฉันคิดว่าในขณะที่ลูปควรยังมี "ทำ"
nwk

1
@nwk เป็นรหัสเทียมทั้งหมดและฉันไม่เห็นด้วย
user9517

เกิดอะไรขึ้นถ้า URL มีเครื่องหมายแอมเปอร์แซนด์ พวกเขาจะหนีหรือไม่ โดยไม่ต้องหลบหนีเชลล์จะคิดว่าคำสั่งควรทำงานในพื้นหลัง
แจ็คเกอร์

2

ตามคำตอบ @ iain แต่ใช้เชลล์สคริปต์ที่เหมาะสม -

while read url; do
  echo "== $url =="
  curl -sL -O "$url"
done < list_of_urls.txt

จะทำงานร่วมกับตัวละครแปลก ๆ เช่นเครื่องหมายแอมเปอร์แซนด์ ฯลฯ ...

สามารถแทนที่-Oด้วยการเปลี่ยนเส้นทางไปยังไฟล์แทนหรืออะไรก็ตามที่เหมาะสม

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