Cómo descargar con wget sin seguir enlaces con parámetros


7

Estoy tratando de descargar dos sitios para incluirlos en un CD:

http://boinc.berkeley.edu/trac/wiki
http://www.boinc-wiki.info

El problema que tengo es que ambos son wikis. Entonces, al descargar con, por ejemplo:

wget -r -k -np -nv -R jpg,jpeg,gif,png,tif http://www.boinc-wiki.info/

Obtengo muchos archivos porque también sigue enlaces como ...? Action = edit ...? Action = diff & version = ...

¿Alguien sabe una forma de evitar esto?

Solo quiero las páginas actuales, sin imágenes, sin diferencias, etc.

PD:

wget -r -k -np -nv -l 1 -R jpg,jpeg,png,gif,tif,pdf,ppt http://boinc.berkeley.edu/trac/wiki/TitleIndex

Esto funcionó para Berkeley pero boinc-wiki.info todavía me está dando problemas: /

PPS:

Obtuve lo que parecen ser las páginas más relevantes con:

wget -r -k -nv  -l 2 -R jpg,jpeg,png,gif,tif,pdf,ppt http://www.boinc-wiki.info

No hay necesidad de profundidad entre el superusuario y serverfault superuser.com/questions/158318/...
Bryan

¿Dónde debería haberlo publicado?
Tie-fighter

Respuestas:


7
wget --reject-regex '(.*)\?(.*)' http://example.com

( --reject-type posixpor defecto) Sin wgetembargo, solo funciona para versiones recientes (> = 1.14) de , según otros comentarios.

Tenga en cuenta que parece que --reject-regexsolo puede usar una vez por wgetllamada. Es decir, debe usar |una sola expresión regular si desea seleccionar varias expresiones regulares:

wget --reject-regex 'expr1|expr2|…' http://example.com

2
Regex en wget no está anclado al principio o al final, por lo que en su primer ejemplo wget --reject-regex '\?' http://example.comes suficiente.
Stéphane Gourichon

4

La documentación para wget dice:

Tenga en cuenta también que las cadenas de consulta (cadenas al final de una URL que comienzan con un signo de interrogación ('?') No se incluyen como parte del nombre de archivo para las reglas de aceptación / rechazo, a pesar de que estas realmente contribuirán al nombre elegido para el archivo local. Se espera que una versión futura de Wget proporcione una opción para permitir la coincidencia con cadenas de consulta.

Parece que esta funcionalidad ha estado sobre la mesa por un tiempo y no se ha hecho nada con ella.

No lo he usado, pero parece que httrack tiene un conjunto de características de filtrado más robusto que wget y puede ser más adecuado para lo que está buscando (lea sobre los filtros aquí http://www.httrack.com/html /fcguide.html ).


+1 por señalarme a httrack. Se ve mejor que wget, y wget parece estancado.
Stefan Lasiewski

He probado Winhttrack pero se comporta de manera extraña. Descarga archivos y recorre directorios que no debería: /
Tie-fighter

Tal vez algún día se arreglará wget. Por ahora httrack y pavuk se ven bien.
joeytwiddle

3

La nueva versión de wget (v.1.14) resuelve todos estos problemas.

Debe usar la nueva opción --reject-regex=....para manejar cadenas de consulta.

Tenga en cuenta que no pude encontrar el nuevo manual que incluye estas nuevas opciones, por lo que debe usar el comando de ayuda wget --help > help.txt


1

Pavuk debería poder hacerlo:

http://pavuk.sourceforge.net/man.html#sect39

Ejemplo de Mediawiki:

[...]

-skip_url_pattern ' oldid = , action = edit , action = historia , diff = , = límite , [/ =] Usuario: , [/ =] User_talk: , [^ p] / Especial: , = especial: [^ R] , php / Especial: [^ LUA] [^ ONL] [^ nul] , MediaWiki: , Busca: , Ayuda: '

[...]


1

Parece que está intentando evitar descargar páginas especiales de MediaWiki. Resolví este problema una vez evitando la index.phppágina:

wget  -R '*index.php*'  -r ... <wiki link>

Sin embargo, el wiki usó las URL como se ve en Wikipedia ( http://<wiki>/en/Theme) y no el patrón que he visto en otros lugares ( http://<wiki>/index.php?title=Theme). Sin embargo, dado que el enlace que proporcionó usa URL en el patrón de Wikipedia, creo que esta solución también puede funcionar para usted.


0

'-R rejlist --reject rejlist' Especifica listas separadas por comas de sufijos o patrones de nombre de archivo para aceptar o rechazar (ver Tipos de archivos). Tenga en cuenta que si alguno de los caracteres comodín, '*', '?', '[' O ']', aparece en un elemento de lista o rechazo, se tratará como un patrón, en lugar de un sufijo.

Los patrones son probablemente lo que quieres. No estoy seguro de cuán sofisticados son los patrones, pero puede intentar aceptar solo ciertos archivos o bloquear:

wget -r -k -np -nv -R jpg,jpeg,gif,png,tif,*\? http://www.boinc-wiki.info/

Aceptar:

wget -r -k -np -nv -R jpg,jpeg,gif,png,tif -A [a-zA-Z.] http://www.boinc-wiki.info/

Editar: nvm a la luz de la otra publicación.


Esto funciona en cadenas de consulta? Cada versión de wget que he usado solo aplica patrones de lista de rechazos a la parte del archivo de la URL. Lo intentaré y veré.
Evan Anderson

No lo he probado. Acabo de buscar la documentación. Encontré que usa la convención de shell, pero su experiencia hablaría más que la mía con respecto a la función de trabajo de la coincidencia.
Joshua Enfield

Escapando del "?" no parece que wget haga lo que el OP quisiera en mi caja CentOS 5.3 con wget 1.11.4.
Evan Anderson
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.