Curl kullanarak bir dosyada listelenen URL'ler indirilsin mi? [kapalı]


15

İndirmem gereken tüm URL'lere sahip bir dosyam var. Ancak bir seferde bir indirme sınırlamak gerekir. yani bir sonraki indirme işlemi yalnızca bir önceki indirme tamamlandıktan sonra başlamalıdır. Bu curl kullanmak mümkün mü? Yoksa başka bir şey mi kullanmalıyım?


3
Merhaba ve serverfault'a hoş geldiniz. Bu sitede soru sorurken lütfen bulunduğunuz yerde olmadığımızı ve hangi ortamı kullandığınızı tahmin edemediğimizi unutmayın. Bu durumda, hangi işletim sistemini çalıştırdığınızı belirtmediniz ve bu da size yanıt vermeyi zorlaştıracaktır.
Stephane

Yanıtlar:


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

2
Bu en iyi cevap. Asker belirtmemiş olsa da, tüm URL'lerin yanıtlarının ayrı ayrı dosyalara yazılması gerektiğini düşünmek muhtemelen güvenlidir. -OBunu yapmak için cURL ile seçeneği kullanın . xargs -n 1 curl -O < your_file.txt
LS

Katılıyorum. Çok düzenlendi.
Grumdrig

Gerçekten ihtiyacım olan bu.
vu ledang

19

wget(1) varsayılan olarak sırayla çalışır ve bu seçeneği yerleşik olarak içerir:

   -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
Asker bunu cURL kullanarak nasıl yapacağını bilmek istediğinden, en azından onu kullanmaya çalışan bir çözüm eklemelisiniz.
LS

4

Bu, bir kabuk betiğinin içindeki kıvrımı kullanmak, bunun gibi bir şey mümkündür, ancak kendiniz için kıvırmak vb.Için uygun seçenekleri araştırmanız gerekir.

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

2
Bu yarım sözde kod anlıyorum ama while döngüsü hala bir "do" olması gerektiğini düşünüyorum.
nwk

1
@nwk tamamen sahte kod ve katılmıyorum.
user9517

Bir URL ve işaretleri içeriyorsa ne olur? Kaçacaklar mı? Kabuk kaçmadan komutun arka planda çalıştırılması gerektiğini düşünecektir.
Jagger

2

@İain cevabına göre, ancak uygun kabuk komut dosyası kullanma -

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

Ve ve işaretleri gibi garip karakterlerle de çalışacak ...

Değiştirebilir miyim -Oyerine bir dosyaya bir yönlendirme ile, ya da her türlü uygundur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.