Recupero file, tutto in una volta, da una pagina web usando curl

75

Vorrei scaricare i file, tutto in una volta, dalla pagina seguente usando curl : link

Ho provato curl http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/ e ha restituito un sacco di righe nel terminale, ma non ho ricevuto alcun file.

    
posta Thi G. 31.08.2013 - 15:20
fonte

5 risposte

111

Usa wget invece. Puoi installarlo con brew install wget se hai installato Homebrew o sudo port install wget se hai installato MacPorts.

Per scaricare file da un elenco di directory, usa -r (ricorsiva), -np (non seguire i collegamenti alle directory madri) e -k per fare in modo che i collegamenti in HTML o CSS scaricati puntino a file locali ( credit @xaccrocheur).

wget -r -np -k http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/

Altre opzioni utili:

  • -nd (nessuna directory): scarica tutti i file nella directory corrente
  • -e robots.off : ignora i file robots.txt, non scaricare i file robots.txt
  • -A png,jpg : accetta solo file con estensioni png o jpg
  • -m (mirror): -r --timestamping --level inf --no-remove-listing
  • -nc , --no-clobber : ignora il download se i file esistono
risposta data 31.08.2013 - 15:56
fonte
20

curl può solo leggere i singoli file di pagine web, il grappolo di linee che hai ottenuto è in realtà l'indice della directory (che vedi anche nel tuo browser se vai a quell'URL). Per usare curl e alcuni strumenti Unix magic per ottenere i file puoi usare qualcosa come

for file in $(curl -s http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/ |
                  grep href |
                  sed 's/.*href="//' |
                  sed 's/".*//' |
                  grep '^[a-zA-Z].*'); do
    curl -s -O http://www.ime.usp.br/~coelho/mac0122-2013/ep2/esqueleto/$file
done

che otterrà tutti i file nella directory corrente.

Per esigenze più elaborate (incluso ottenere un sacco di file da un sito con cartelle / directory), wget (come già proposto in un'altra risposta) è l'opzione migliore.

    
risposta data 31.08.2013 - 16:09
fonte
4

Rif: link

Puoi usare il seguente comando:

wget --execute="robots = off" --mirror --convert-links --no-parent --wait=5 <website-url>

Spiegazione con ciascuna opzione

  • wget : comando semplice per fare richiesta CURL e scaricare file remoti sul nostro computer locale.
  • --execute="robots = off" : questo ignorerà il file robots.txt durante la scansione delle pagine. È utile se non ricevi tutti i file.
  • --mirror : questa opzione fondamentalmente rispecchia la struttura delle directory per l'URL specificato. È una scorciatoia per -N -r -l inf --no-remove-listing che significa:
    • -N : non recuperare nuovamente i file se non più recenti di locali
    • -r : specifica il download ricorsivo
    • -l inf : massima profondità di ricorsione (inf o 0 per infinito)
    • --no-remove-listing : non rimuovere i file ".listing"
  • --convert-links : crea collegamenti in HTML o CSS scaricati in collegamento con file locali
  • --no-parent : non salire alla directory padre
  • --wait=5 : attendi 5 secondi tra i recuperi. In modo che non thrash il server.
  • <website-url> : questa è l'url del sito Web da cui scaricare i file.

Happy Downloading: smiley:

    
risposta data 19.06.2016 - 06:22
fonte
2

Puoi utilizzare httrack disponibile per Windows / MacOS e installabile tramite Homebrew.

    
risposta data 18.06.2017 - 15:08
fonte
0

Per quelli di noi che preferirebbero usare un'applicazione con una GUI, c'è l'economico programma shareware DeepVacuum per Mac OS X , che implementa wget in modo user-friendly, con un elenco di preset in grado di gestire attività di uso comune. Puoi anche salvare le tue configurazioni personalizzate come preimpostazioni.

    
risposta data 15.02.2014 - 17:05
fonte

Leggi altre domande sui tag