Tải xuống các url được liệt kê trong một tập tin bằng cách sử dụng curl? [đóng cửa]


15

Tôi có một tệp có tất cả các url mà tôi cần tải xuống. Tuy nhiên tôi cần giới hạn một lần tải xuống tại một thời điểm. tức là lần tải xuống tiếp theo chỉ nên bắt đầu khi lần trước đó kết thúc. Điều này có thể sử dụng curl? Hoặc tôi nên sử dụng bất cứ điều gì khác.


3
Xin chào và chào mừng đến với serverfault. Khi đặt câu hỏi trên trang web này, vui lòng luôn nhớ rằng chúng tôi không ở vị trí của bạn và không thể đoán môi trường bạn đang sử dụng. Trong trường hợp này, bạn đã không chỉ định hệ điều hành nào bạn đang chạy sẽ khiến việc trả lời bạn đúng cách khó khăn.
Stephane

Câu trả lời:


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

2
Đây là câu trả lời tốt nhất. Mặc dù người hỏi không chỉ định, nhưng có thể an toàn khi giả sử các câu trả lời cho tất cả các URL nên được ghi vào các tệp riêng lẻ. Sử dụng -Otùy chọn với cURL để làm điều đó. xargs -n 1 curl -O < your_file.txt
LS

Tôi đồng ý. Vì vậy, chỉnh sửa.
Grumdrig

Đây thực sự là những gì tôi cần.
vu ledang

19

wget(1) hoạt động tuần tự theo mặc định và có tùy chọn này được tích hợp sẵn:

   -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
Vì người hỏi muốn biết làm thế nào để sử dụng cURL, nên ít nhất bạn nên bao gồm một giải pháp cố gắng sử dụng nó.
LS

4

Điều này có thể sử dụng curl trong tập lệnh shell, đại loại như thế này nhưng bạn sẽ cần nghiên cứu các tùy chọn phù hợp cho curl, v.v.

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

2
Tôi hiểu đây là một nửa mã giả nhưng tôi nghĩ rằng trong khi vòng lặp vẫn nên có một "làm".
nwk

1
@nwk nó hoàn toàn là mã giả và tôi không đồng ý.
dùng9517

Điều gì xảy ra nếu một URL chứa ký hiệu? Họ sẽ được trốn thoát? Không thoát khỏi shell sẽ nghĩ rằng lệnh nên được chạy trong nền.
Jagger

2

Dựa trên câu trả lời @iain, nhưng sử dụng kịch bản shell phù hợp -

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

Cũng sẽ làm việc với các nhân vật kỳ lạ như ký hiệu, v.v ...

Có thể thay thế -Obằng một chuyển hướng vào một tập tin thay thế, hoặc bất cứ điều gì là phù hợp.

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.