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

CURL om een map te downloaden

Ik probeer een volledige website directory te downloaden met CURL. Het volgende commando werkt niet:

curl -LO http://example.com/

Het geeft een foutmelding: curl: Remote file name has no length!.

Maar als ik dit doe: curl -LO http://example.com/someFile.type werkt het wel. Enig idee hoe ik alle bestanden in de opgegeven map kan downloaden? Bedankt.

Antwoorden (6)

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

Werkt altijd voor mij, inclusief geen ouder en recursief om alleen de gewenste directory te krijgen.

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

HTTP heeft niet echt een notie van directories. De slashes behalve de eerste drie (http://example.com/) hebben geen speciale betekenis behalve met betrekking tot .. in relatieve URLs. Dus tenzij de server een bepaald formaat volgt, is er geen manier om “alle bestanden in de gespecificeerde directory te downloaden”.

Als je de hele site wilt downloaden, kun je het beste alle links op de hoofdpagina recursief doorzoeken. Curl kan dit niet, maar wget wel. Dit zal werken als de website niet te dynamisch is (in het bijzonder, wget zal geen links zien die zijn opgebouwd door Javascript code). Begin met wget -r http://example.com/, en kijk onder “Recursive Retrieval Options” en “Recursive Accept/Reject Options” in de wget handleiding voor meer relevante opties (recursie diepte, uitsluitingslijsten, etc).

Als de website geautomatiseerde downloads probeert te blokkeren, kan het nodig zijn om de user agent string (-U Mozilla) te veranderen, en om robots.txt te negeren (maak een leeg bestand example.com/robots.txt en gebruik de -nc optie zodat wget niet probeert om het van de server te downloaden).

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

In dit geval is curl NIET het beste gereedschap. Je kunt wget gebruiken met het -r argument, zoals dit:

wget -r http://example.com/

Dit is de meest eenvoudige vorm, en en je kunt ook extra argumenten gebruiken. Voor meer informatie, zie de manpage (man wget).

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

Dit is niet mogelijk. Er is geen standaard, algemeen geïmplementeerde, manier voor een webserver om de inhoud van een map aan u terug te geven. De meeste servers genereren een HTML index van een map, indien geconfigureerd om dit te doen, maar deze uitvoer is niet standaard, noch gegarandeerd op welke manier dan ook. Je zou deze HTML kunnen parsen, maar denk er aan dat het formaat van server tot server zal veranderen, en niet altijd zal worden ingeschakeld.

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

U kunt de Firefox-extensie DownThemAll gebruiken! Hiermee kunt u alle bestanden in een map met één klik downloaden. Het is ook aanpasbaar en je kunt opgeven welke bestandstypes je wilt downloaden. Dit is de gemakkelijkste manier die ik heb gevonden.

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

Misschien kunt u hier een website ripper gebruiken, die alles download en de inhoud/interne links aanpast voor lokaal gebruik. Een goede kan hier gevonden worden: http://www.httrack.com