Come scaricare la directory HTTP con tutti i file e le sottodirectory come appaiono nell'elenco dei file / cartelle online?


189

C'è una directory HTTP online a cui ho accesso. Ho provato a scaricare tutte le sottodirectory e i file tramite wget. Ma il problema è che quando wgetscarica le sottodirectory scarica il index.htmlfile che contiene l'elenco dei file in quella directory senza scaricare i file stessi.

Esiste un modo per scaricare le sottodirectory e i file senza limiti di profondità (come se la directory che voglio scaricare sia solo una cartella che voglio copiare sul mio computer).

directory HTTP online

Risposte:


357

Soluzione:

wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/ddd/

Spiegazione:

  • Scaricherà tutti i file e le sottocartelle nella directory ddd
  • -r : ricorsivamente
  • -np: non andare nelle directory superiori, come ccc / ...
  • -nH : non salvare i file nella cartella del nome host
  • --cut-dirs=3: ma salvandolo su ddd omettendo le prime 3 cartelle aaa , bbb , ccc
  • -R index.html: esclusi i file index.html

Riferimento: http://bmwieczorek.wordpress.com/2008/10/01/wget-recursively-download-all-files-from-certain-directory-listed-by-apache/


17
Grazie! Inoltre, in base a questo , puoi usare -Rlike -R cssper escludere tutti i file CSS o usare -Alike -A pdfper scaricare solo file PDF.
Giovanni,

7
Grazie! Ulteriori consigli presi dalla pagina man di wget When downloading from Internet servers, consider using the ‘-w’ option to introduce a delay between accesses to the server. The download will take a while longer, but the server administrator will not be alarmed by your rudeness.
jgrump2012

3
Ottengo questo errore 'wget' non viene riconosciuto come comando interno o esterno, programma eseguibile o file batch.
hamish

1
@hamish potresti aver bisogno di installare prima wget o wget non è nel tuo $ PATH.
Mingjiang Shi

16
Ottima risposta, ma nota che se un robots.txtfile non consente il download di file nella directory, questo non funzionerà. In tal caso è necessario aggiungere -e robots=off . Vedi unix.stackexchange.com/a/252564/10312
Daniel Hershcovich,

45

Sono stato in grado di farlo funzionare grazie a questo post utilizzando VisualWGet . Ha funzionato benissimo per me. La parte importante sembra essere quella di controllare la -recursivebandiera (vedi immagine).

-no-parentHo anche scoperto che la bandiera è importante, altrimenti proverà a scaricare tutto.

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine


2
Ho appena trovato questo - Dicembre 2017. Funziona bene. L'ho preso su sourceforge.net/projects/visualwget
SDsolar il

2
Funzionava bene su macchine Windows, non dimenticare di controllare le opzioni menzionate nella risposta, altrimenti non funzionerà
csharpcoder,

Non funziona con determinati https. @DaveLucre se avessi provato con wget nella soluzione cmd, saresti in grado di scaricare anche, ma alcuni server non lo consentono, immagino
Yannis Dran,

cosa fa check controllato --no-parent?
T.Todua,

1
Funzionando nel marzo 2020!
Signor programmatore, l'

7
wget -r -np -nH --cut-dirs=3 -R index.html http://hostname/aaa/bbb/ccc/ddd/

A partire dal man wget

'-r' '--recursive' Attiva il recupero ricorsivo. Vedi Download ricorsivo, per maggiori dettagli. La profondità massima predefinita è 5.

'-np' '--no-parent' Non ascende mai alla directory principale durante il recupero ricorsivo. Questa è un'opzione utile, poiché garantisce che verranno scaricati solo i file al di sotto di una determinata gerarchia. Vedere Limiti basati su directory, per maggiori dettagli.

'-nH' '--no-host-directories' Disabilita la generazione di directory con prefisso host. Per impostazione predefinita, invocando Wget con '-r http://fly.srk.fer.hr/ ' verrà creata una struttura di directory che inizia con fly.srk.fer.hr/. Questa opzione disabilita tale comportamento.

'--cut-dirs = number' Ignora i componenti della directory numerica. Ciò è utile per ottenere un controllo dettagliato sulla directory in cui verrà salvato il recupero ricorsivo.

Prendi, ad esempio, la directory in " ftp://ftp.xemacs.org/pub/xemacs/ ". Se lo recuperi con '-r', verrà salvato localmente in ftp.xemacs.org/pub/xemacs/. Mentre l'opzione '-nH' può rimuovere la parte ftp.xemacs.org/, sei ancora bloccato con pub / xemacs. Qui è dove '--cut-dirs' è utile; fa sì che Wget non "veda" il numero dei componenti della directory remota. Ecco alcuni esempi di come funziona l'opzione '--cut-dirs'.

Nessuna opzione -> ftp.xemacs.org/pub/xemacs/ -nH -> pub / xemacs / -nH --cut-dirs = 1 -> xemacs / -nH --cut-dirs = 2 ->.

--cut-dirs = 1 -> ftp.xemacs.org/xemacs/ ... Se vuoi semplicemente sbarazzarti della struttura delle directory, questa opzione è simile a una combinazione di '-nd' e '-P'. Tuttavia, diversamente da '-nd', '--cut-dirs' non perde con le sottodirectory — per esempio, con '-nH --cut-dirs = 1', una sottodirectory beta / verrà posizionata in xemacs / beta, come ci si aspetterebbe.


3
Alcune spiegazioni sarebbero fantastiche.
Benoît Latinier,

Che ne dici di scaricare un tipo di file specifico usando VisualWget ? È possibile scaricare solo file mp3 in una directory e nelle sue sottodirectory in VisualWget ?
Jason

3

wgetè una risorsa inestimabile e qualcosa che uso me stesso. Tuttavia a volte ci sono caratteri nell'indirizzo che si wgetidentifica come errori di sintassi. Sono sicuro che ci sia una soluzione per questo, ma poiché questa domanda non si è posta in modo specifico, wgetho pensato che avrei offerto un'alternativa per quelle persone che senza dubbio inciamperanno su questa pagina alla ricerca di una soluzione rapida senza la curva di apprendimento richiesta.

Ci sono alcune estensioni del browser che possono farlo, ma la maggior parte richiede l'installazione di gestori di download, che non sono sempre gratuiti, tendono ad essere un problema e utilizzano molte risorse. Ecco uno che non ha nessuno di questi inconvenienti:

"Download Master" è un'estensione per Google Chrome che funziona benissimo per il download dalle directory. Puoi scegliere di filtrare quali tipi di file scaricare o scaricare l'intera directory.

https://chrome.google.com/webstore/detail/download-master/dljdacfojgikogldjffnkdcielnklkce

Per un elenco aggiornato delle funzionalità e altre informazioni, visitare la pagina del progetto sul blog dello sviluppatore:

http://monadownloadmaster.blogspot.com/


3

puoi usare lftp, il coltellino dell'esercito swish del download se hai file più grandi che puoi aggiungere --use-pget-n=10al comando

lftp -c 'mirror --parallel=100 https://example.com/files/ ;exit'

ha funzionato perfettamente e molto velocemente, questo ha massimizzato la mia linea Internet scaricando migliaia di piccoli file. Molto bene.
13

funziona perfettamente !! L'opzione migliore!
ambigus9


2

Nessun software o plugin richiesto!

(utilizzabile solo se non hai bisogno di un reparto ricorsivo)

Usa il bookmarklet. Trascina questo link nei segnalibri, quindi modifica e incolla questo codice:

(function(){ var arr=[], l=document.links; var ext=prompt("select extension for download (all links containing that, will be downloaded.", ".mp3"); for(var i=0; i<l.length; i++) { if(l[i].href.indexOf(ext) !== false){ l[i].setAttribute("download",l[i].text); l[i].click(); } } })();

e vai sulla pagina (da dove vuoi scaricare i file) e fai clic su quel bookmarklet.


-1

wget generalmente funziona in questo modo, ma alcuni siti potrebbero avere problemi e potrebbe creare troppi file html non necessari. Per facilitare questo lavoro e prevenire la creazione di file non necessari, sto condividendo il mio script getwebfolder, che è il primo script Linux che ho scritto da solo. Questo script scarica tutto il contenuto di una cartella Web inserita come parametro.

Quando si tenta di scaricare una cartella Web aperta tramite wget che contiene più di un file, wget scarica un file denominato index.html. Questo file contiene un elenco di file della cartella Web. Il mio script converte i nomi dei file scritti nel file index.html in indirizzi web e li scarica chiaramente con wget.

Testato su Ubuntu 18.04 e Kali Linux, potrebbe funzionare anche in altre distro.

Utilizzo:

  • estrarre il file getwebfolder dal file zip fornito di seguito

  • chmod +x getwebfolder (solo per la prima volta)

  • ./getwebfolder webfolder_URL

ad esempio ./getwebfolder http://example.com/example_folder/

Link per scaricare

Dettagli sul blog

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.