Scarica gli URL elencati in un file usando curl? [chiuso]


15

Ho un file che ha tutti gli URL da cui devo scaricare. Tuttavia, devo limitare un download alla volta. cioè il prossimo download dovrebbe iniziare solo una volta terminato il precedente. È possibile usare l'arricciatura? O dovrei usare qualcos'altro.


3
Ciao e benvenuto su serverfault. Quando fai domande su questo sito, ricorda sempre che non siamo al tuo posto e non possiamo indovinare l'ambiente che stai utilizzando. In questo caso, non hai specificato quale sistema operativo stai eseguendo, il che renderà difficile rispondere correttamente.
Stephane,

Risposte:


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

2
Questa è la risposta migliore Sebbene il richiedente non abbia specificato, probabilmente è sicuro supporre che le risposte per tutti gli URL debbano essere scritte su singoli file. Usa l' -Oopzione con cURL per farlo. xargs -n 1 curl -O < your_file.txt
LS

Sono d'accordo. Così modificato.
Grumdrig,

Questo è davvero ciò di cui ho bisogno.
Vu Ledang

19

wget(1) funziona in sequenza per impostazione predefinita e ha questa opzione integrata:

   -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
Poiché il richiedente voleva sapere come fare usando cURL, dovresti almeno includere una soluzione che tenti di usarlo.
LS

4

Questo è possibile usando curl all'interno di uno script di shell, qualcosa del genere ma dovrai cercare le opzioni appropriate per curl ecc

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

2
Capisco che questo sia mezzo pseudocodice ma penso che mentre il ciclo dovrebbe ancora avere un "do".
nwk,

1
@nwk è interamente pseudocodice e non sono d'accordo.
utente9517

Cosa succede se un URL contiene e commerciali? Saranno sfuggiti? Senza uscire dalla shell penserà che il comando debba essere eseguito in background.
Jagger,

2

Basato sulla risposta di @iain, ma usando un corretto script di shell -

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

Funzionerà anche con personaggi strani come e commerciali, ecc ...

È possibile sostituire il -Ocon un reindirizzamento in un file o qualunque cosa sia adatta.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.