J'essaie de télécharger un répertoire de site Web complet à l'aide de CURL. La commande suivante ne fonctionne pas:
curl -LO http://example.com/
Il renvoie une erreur: curl: Remote file name has no length!
.
Mais quand je fais ça: curl -LO http://example.com/someFile.type
ça marche. Une idée comment télécharger tous les fichiers dans le répertoire spécifié? Merci.
wget --no-parent -r http://WEBSITE.com/DIRECTORY
et aussi sans--no-parent
- n'a pas fonctionné.HTTP n'a pas vraiment de notion de répertoires. Les barres obliques autres que les trois premières (
http://example.com/
) n'ont aucune signification particulière, sauf en ce qui concerne les..
URL relatives. Donc, sauf si le serveur suit un format particulier, il n'y a aucun moyen de «télécharger tous les fichiers dans le répertoire spécifié».Si vous souhaitez télécharger l'intégralité du site, le mieux est de parcourir tous les liens de la page principale de manière récursive. Curl ne peut pas le faire, mais wget le peut. Cela fonctionnera si le site Web n'est pas trop dynamique (en particulier, wget ne verra pas les liens qui sont construits par du code Javascript). Commencez par
wget -r http://example.com/
, et regardez sous «Options de récupération récursive» et «Options d'acceptation / rejet récursif» dans le manuel de wget pour des options plus pertinentes (profondeur de récursivité, listes d'exclusion, etc.).Si le site Web tente de bloquer les téléchargements automatisés, vous devrez peut-être modifier la chaîne de l'agent utilisateur (
-U Mozilla
) et ignorerrobots.txt
(créer un fichier videexample.com/robots.txt
et utiliser l'-nc
option pour que wget n'essaie pas de le télécharger à partir du serveur).la source
-e robots=off
. Vous pouvez également éviter de le télécharger en le rejetant avec-R "robots.txt"
.Dans ce cas, ce
curl
n'est PAS le meilleur outil. Vous pouvez utiliserwget
avec l'-r
argument, comme ceci:Il s'agit de la forme la plus simple et vous pouvez également utiliser des arguments supplémentaires. Pour plus d'informations, voir le
manpage
(man wget
).la source
Ce n'est pas possible. Il n'existe aucun moyen standard, généralement implémenté, pour un serveur Web de vous renvoyer le contenu d'un répertoire. La plupart des serveurs génèrent un index HTML d'un répertoire, s'ils sont configurés pour le faire, mais cette sortie n'est pas standard, ni garantie par aucun moyen. Vous pouvez analyser ce code HTML, mais gardez à l'esprit que le format changera de serveur en serveur et ne sera pas toujours activé.
la source
wget
oucurl
?Vous pouvez utiliser l'extension Firefox DownThemAll! Il vous permettra de télécharger tous les fichiers d'un répertoire en un seul clic. Il est également personnalisable et vous pouvez spécifier les types de fichiers à télécharger. C'est le moyen le plus simple que j'ai trouvé.
la source
Vous pouvez trouver une utilisation pour un ripper de site Web ici, cela téléchargera tout et modifiera le contenu / liens internes pour une utilisation locale. Un bon peut être trouvé ici: http://www.httrack.com
la source