Saltar al contenido

wget con comodines en descargas http

Solución:

Creo que estos interruptores harán lo que quieras con wget:

   -A acclist --accept acclist
   -R rejlist --reject rejlist
       Specify comma-separated lists of file name suffixes or patterns to 
       accept or reject. Note that if any of the wildcard characters, *, ?,
       [ or ], appear in an element of acclist or rejlist, it will be 
       treated as a pattern, rather than a suffix.

   --accept-regex urlregex
   --reject-regex urlregex
       Specify a regular expression to accept or reject the complete URL.

Ejemplo

$ wget -r --no-parent -A 'bar.*.tar.gz' http://url/dir/

Hay una buena razón por la que esto no puede funcionar directamente con HTTP, y es que una URL no es una ruta de archivo, aunque el uso de / como delimitador puede hacer que parezca uno, ya veces se corresponden.1

Convencionalmente (o, históricamente), los servidores web a menudo reflejan jerarquías de directorios (para algunos, por ejemplo, Apache, esto es una especie de integral) e incluso proporcionan índices de directorio como un sistema de archivos. Sin embargo, nada sobre el protocolo HTTP requiere esto.

Esto es significativo, porque si desea aplicar un glob en, digamos, todo lo que sea un subtrayecto de http://foo/bar/, a menos que el servidor proporcione algún mecanismo para proporcionarle tal (por ejemplo, el índice mencionado anteriormente), no hay nada para aplicarlo. para. No hay ningún sistema de archivos para buscar. Por ejemplo, solo porque sabe que hay páginas http://foo/bar/one.html y http://foo/bar/two.html no significa que pueda obtener una lista de archivos y subdirectorios a través de http://foo/bar/. Estaría completamente dentro del protocolo que el servidor devuelva 404 por eso. O podría devolver una lista de archivos. O podría enviarte una bonita imagen jpg. Etc.

Entonces no hay un estándar aquí que wget puede explotar. AFAICT, wget funciona para reflejar una jerarquía de ruta examinando activamente los enlaces en cada página. En otras palabras, si refleja de forma recursiva http://foo/bar/index.html se descarga index.html y luego extrae enlaces que son una subruta de eso.2 los -A switch es simplemente un filtro que se aplica en este proceso.

En resumen, si sabe que estos archivos están indexados en algún lugar, puede comenzar con eso usando -A. Si no es así, no tienes suerte.


1. Por supuesto, una URL de FTP también es una URL. Sin embargo, aunque no sé mucho sobre el protocolo FTP, supongo que, en función de su naturaleza, puede ser de una forma que permita un globbing transparente.

2. Esto significa que podría haber una URL válida. http://foo/bar/alt/whatever/stuff/ ese no será incluido porque no está vinculado de ninguna manera a nada en el conjunto de cosas vinculadas a http://foo/bar/index.html. A diferencia de los sistemas de archivos, los servidores web no están obligados a hacer transparente el diseño de su contenido, ni necesitan hacerlo de una manera intuitivamente obvia.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *