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

CURL para descargar un directorio

Advertisement

Estoy tratando de descargar un directorio completo de un sitio web usando CURL. El siguiente comando no funciona:

curl -LO http://example.com/

Devuelve un error: curl: Remote file name has no length!.

Pero cuando hago esto: curl -LO http://example.com/someFile.type funciona. ¿Alguna idea de cómo descargar todos los archivos en el directorio especificado? Gracias.

Advertisement
Advertisement

Respuestas (6)

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

Siempre me funciona, incluido sin padre y recursivo para obtener sólo el directorio deseado.

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

HTTP no tiene realmente una noción de directorios. Las barras inclinadas que no sean las tres primeras (http://example.com/) no tienen ningún significado especial, excepto con respecto a .. en las URL relativas. Así que, a menos que el servidor siga un formato particular, no hay forma de “descargar todos los archivos del directorio especificado”.

Si quiere descargar todo el sitio, su mejor opción es recorrer todos los enlaces de la página principal recursivamente. Curl no puede hacerlo, pero wget sí. Esto funcionará si el sitio web no es demasiado dinámico (en particular, wget no verá los enlaces construidos con código Javascript). Empiece con wget -r http://example.com/, y busque en “Recursive Retrieval Options” y “Recursive Accept/Reject Options” en el manual de wget para más opciones relevantes (profundidad de recursión, listas de exclusión, etc).

Si el sitio web intenta bloquear las descargas automáticas, puede que tenga que cambiar la cadena del agente de usuario (-U Mozilla), e ignorar robots.txt (crear un archivo vacío example.com/robots.txt y utilizar la opción -nc para que wget no intente descargarlo del servidor).

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

En este caso, curl NO es la mejor herramienta. Puede usar wget con el argumento -r, así:

wget -r http://example.com/

Esta es la forma más básica, y también puede utilizar argumentos adicionales. Para más información, consulte el apartado manpage (man wget).

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

Esto no es posible. No existe una forma estándar, generalmente implementada, para que un servidor web le devuelva el contenido de un directorio. La mayoría de los servidores generan un índice HTML de un directorio, si están configurados para ello, pero esta salida no es estándar, ni está garantizada de ninguna manera. Puedes analizar este HTML, pero ten en cuenta que el formato cambiará de un servidor a otro, y no siempre estará habilitado.

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

¡Puedes utilizar la extensión de Firefox DownThemAll! Te permitirá descargar todos los archivos de un directorio con un solo clic. También es personalizable y puedes especificar qué tipos de archivos descargar. Esta es la forma más fácil que he encontrado.

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

Puede que encuentres un uso para un ripper de sitios web, esto descargará todo y modificará los contenidos/enlaces internos para su uso local. Uno bueno se puede encontrar aquí: http://www.httrack.com

Advertisement

Preguntas relacionadas

7
16
19
7
8
Advertisement