wget descarga recursiva, pero no quiero seguir todos los enlaces

10

Estoy tratando de duplicar un sitio web usando wget, pero no quiero descargar muchos archivos, así que estoy usando la --rejectopción de wget para no guardar todos los archivos. Sin embargo, wget seguirá descargando todos los archivos y luego eliminará el archivo si coincide con mi opción de rechazo.

¿Hay alguna forma de decirle a wget que no siga ciertos enlaces si coinciden con algún comodín de shell? Si wget no puede hacer esto, ¿hay algún otro comando de Linux común que pueda hacer esto?

Rory
fuente
3
Publique todo su comando por favor. Hace que sea mucho más fácil solucionar problemas.
Joseph Kern el

Respuestas:

9

También puede probar HTTrack que tiene, IMO, una lógica de inclusión / exclusión más flexible e intuitiva. Algo como esto...

httrack "https://example.com" -O ExampleMirrorDirectory \
"-*" \
"+https://example.com/images/*" \
"-*.swf"

Las reglas se aplicarán en orden y anularán las reglas anteriores ...

  1. Excluir todo
  2. Pero incluya https://example.com/images/ *
  3. Pero excluya cualquier cosa que termine en swf
lukecyca
fuente
¿Descargaría CSS, imágenes, etc. con URL actualizadas?
brandizzi
6

Parece que esto no es posible en wget

Rory
fuente
1

Bajo la sección --reject de 'man wget':

"Tenga en cuenta que si alguno de los caracteres comodín, *,?, [O], aparece en un elemento de acclist o rejlist, se tratará como un patrón, en lugar de un sufijo".

Si está haciendo esto, es posible que desee dar ejemplos de los patrones que está utilizando y lo que cree que debería coincidir, y eso no. Dices que coinciden, pero ¿estás seguro?

Además, asegúrese de poner esta lista entre comillas, para que el shell no expanda esos comodines antes de pasar los argumentos a wget.

Incluso si su sistema no tiene la versión 1.12, lea la sección Tipos de archivos del manual aquí . Según el registro de cambios, el responsable agregó algunas advertencias:

* NEWS: Added documentation change re: --no-parents, and various
caveats on accept/reject lists behavior. Rearranged some items in
order of priority.
Kyle Brandt
fuente
Las opciones --reject están entre comillas. Puedo ver que coinciden con los archivos correctos porque después de descargar el archivo, wget elimina el archivo. Solo quiero detenerlo descargando el archivo en primer lugar
Rory
¿Son estos archivos htm (l)? Según el manual, estos se descargan sin importar qué.
Kyle Brandt el
Si. Los archivos que quiero rechazar son archivos HTML. Sé que se descargan sin importar qué. ¿Hay alguna forma de evitar eso?
Rory el
1

Puede restringir el nivel de recursión con la -l NUMBERopción, si eso ayuda (no seguir un cierto patrón de expresiones regulares).

Un nivel de descargas de "2" index.html, sus subsitios / imágenes / etc. y los enlaces en el subsitio.

PEra
fuente
no, eso no ayudaría en este caso
Rory
1

¿Cómo usas wget? intenta usarlo de esta manera:

wget -r --reject=gif,jpg,swf http://norc.aut.ac.ir/

este comando ignorará los archivos gif y jpg y swf.

orezvani
fuente
Los archivos que Rory McCann quiere rechazar son archivos HTML, pero quiere conservar otros archivos HTML, por lo que esta sintaxis no se aplica a su pregunta.
Royce Williams el
1

Una solución alternativa sería ejecutar wget a través de un servidor proxy. Configure su proxy para no permitir ciertos patrones. Esto evitaría que wget los descargue en primer lugar.

wget descargará y eliminará un archivo que coincida con el patrón -R. también puede coincidir con patrones, no solo extensiones o partes de nombres de archivos. Sin embargo, no impide que wget se descargue primero y se elimine más tarde.

httrack tiene algunas características agradables, pero en mi experiencia la forma en que guarda un "archivo" puede ser un poco peculiar, por ejemplo, si httrack se encuentra con index.asp? Type = BASIC & PAGEID = 2234234
puede guardarlo, pero debe decirle que conserve el archivo partes de la consulta,
por ejemplo,% h% p /% n% [TYPE: @TYPE = ::]% [PAGEID: PAGEID = ::].% t
the @ es un marcador de posición para un interrogación, puede cambiar el nombre de los archivos más tarde, o tal vez escapar de un signo de interrogación en su lugar? El problema es que.% t agregará un '.html' al final de su URI que originalmente no tenía un '.html'. Y si lo quita, las imágenes que httrack descargas carecerán de una extensión de archivo.

Mejor usar wget en mi humilde opinión

cparod
fuente