Ottenere tutti i file da una pagina Web usando curl


Risposte:


125

Usa wgetinvece. Puoi installarlo con brew install wgetse hai installato Homebrew o sudo port install wgetse hai installato MacPorts.

Per scaricare file da un elenco di directory, utilizzare -r(ricorsivo), -np(non seguire i collegamenti alle directory principali) e -kfare in modo che i collegamenti nei file 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 estensione pngojpg
  • -m (specchio): -r --timestamping --level inf --no-remove-listing
  • -nc, --no-clobber: Salta il download se esistono file

3
wget -r -np -k http://your.website.com/specific/directory. Il trucco è utilizzare -kper convertire i collegamenti (immagini, ecc.) Per la visualizzazione locale.
yPhil

brewe portnon funziona per me installare wget. Cosa dovrei fare?
Hoseyn Heydari,

@HoseynHeydari: puoi usare rudix.org per i binari compilati per osx. quindi è necessario installare rudix e quindi utilizzare: sudo rudix install wget
Mamonu

L'opzione -knon funziona sempre. Ad esempio, se nella pagina Web sono presenti due collegamenti che puntano allo stesso file che si sta tentando di acquisire in modo ricorsivo, wgetsembra convertire solo il collegamento della prima istanza ma non quello della seconda.
Kun

22

curlpuò leggere solo file di singole pagine Web, il gruppo di righe che hai è in realtà l'indice di directory (che vedi anche nel tuo browser se vai a quell'URL). Per usare curle alcuni strumenti Unix magici per ottenere i file potresti usare qualcosa del genere

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 porterà tutti i file nella directory corrente.

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


Grazie. Questa è una buona soluzione e fornire un esempio funzionante è fantastico!
egelev,

1
xmllint --html --xpath '//a/@href'è probabilmente un parser migliore di grep.
ceving

8

Rif: http://blog.incognitech.in/download-files-from-apache-server-listing-directory/

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 effettuare la richiesta CURL e scaricare i file remoti sul nostro computer locale.
  • --execute="robots = off": Questo ignorerà il file robots.txt durante la scansione delle pagine. È utile se non si ottengono tutti i file.
  • --mirror: Questa opzione rispecchierà sostanzialmente la struttura della directory per l'URL specificato. È una scorciatoia per il -N -r -l inf --no-remove-listingche significa:
    • -N: non recuperare nuovamente i file se non più recenti di quelli locali
    • -r: specifica il download ricorsivo
    • -l inf: profondità massima di ricorsione (inf o 0 per infinito)
    • --no-remove-listing: non rimuovere i file '.listing'
  • --convert-links: i collegamenti in HTML o CSS scaricati puntano a file locali
  • --no-parent: non salire alla directory principale
  • --wait=5: attendere 5 secondi tra i recuperi. In modo che non schiacciamo il server.
  • <website-url>: Questo è l'URL del sito web da cui scaricare i file.

Buon download: smiley:


3

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


qualcosa di nuovo per me, grazie. la cosa migliore è che è veloce e veloce: una linea. basta tagliare il grasso ed evitare tutta la spazzatura.
Peter Teoh,

0

Per quelli di noi che preferiscono utilizzare un'applicazione con una GUI, esiste il programma shareware economico DeepVacuum per Mac OS X , che implementa wgetin modo intuitivo , con un elenco di impostazioni predefinite in grado di gestire le attività più comuni. Puoi anche salvare le tue configurazioni personalizzate come preimpostazioni.

inserisci qui la descrizione dell'immagine

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.