2010-10-17 17:55:07 +0000 2010-10-17 17:55:07 +0000
40
40

CURL per scaricare una directory

Sto cercando di scaricare una directory completa del sito web usando CURL. Il seguente comando non funziona:

curl -LO http://example.com/

Restituisce un errore: curl: Remote file name has no length!.

Ma quando faccio questo: curl -LO http://example.com/someFile.type funziona. Qualche idea su come scaricare tutti i file nella directory specificata? Grazie.

Risposte (6)

40
40
40
2014-01-31 16:44:52 +0000

Funziona sempre per me, incluso nessun genitore e ricorsivo per ottenere solo la directory desiderata.

wget --no-parent -r http://WEBSITE.com/DIRECTORY
32
32
32
2010-10-17 19:59:25 +0000

HTTP non ha davvero una nozione di directory. Le barre diverse dalle prime tre (http://example.com/) non hanno alcun significato speciale se non rispetto a .. negli URL relativi. Quindi, a meno che il server segua un formato particolare, non c'è modo di “scaricare tutti i file nella directory specificata”.

Se volete scaricare l'intero sito, la cosa migliore è attraversare ricorsivamente tutti i link della pagina principale. Curl non può farlo, ma Wget sì. Questo funzionerà se il sito non è troppo dinamico (in particolare, wget non vedrà i link che sono costruiti da codice Javascript). Inizia con wget -r http://example.com/, e guarda sotto “Recursive Retrieval Options” e “Recursive Accept/Reject Options” nel manuale di wget per altre opzioni rilevanti (profondità di ricorsione, liste di esclusione, ecc.)

Se il sito web cerca di bloccare i download automatici, potrebbe essere necessario cambiare la stringa dello user agent (-U Mozilla), e ignorare robots.txt (creare un file vuoto example.com/robots.txt e usare l'opzione -nc in modo che wget non cerchi di scaricarlo dal server).

17
17
17
2014-01-23 11:50:03 +0000

In questo caso, curl NON è lo strumento migliore. Puoi usare wget con l'argomento -r, come questo:

wget -r http://example.com/

Questa è la forma più elementare, e si possono usare anche altri argomenti. Per maggiori informazioni, vedi manpage (man wget).

5
5
5
2010-10-17 17:59:25 +0000

Questo non è possibile. Non c'è un modo standard, generalmente implementato, per un server web di restituirvi il contenuto di una directory. La maggior parte dei server genera un indice HTML di una directory, se configurato per farlo, ma questo output non è standard, né garantito in alcun modo. Potreste analizzare questo HTML, ma tenete presente che il formato cambierà da server a server e non sarà sempre abilitato.

2
2
2
2013-01-20 00:08:28 +0000

Potete usare l'estensione per Firefox DownThemAll! Vi permetterà di scaricare tutti i file in una directory con un solo clic. È anche personalizzabile e puoi specificare quali tipi di file scaricare. Questo è il modo più semplice che ho trovato.

0
0
0
2014-01-23 12:44:17 +0000

Potresti trovare un uso per un ripper di siti web qui, questo scaricherà tutto e modificherà i contenuti/collegamenti interni per uso locale. Uno buono può essere trovato qui: http://www.httrack.com