Haga que wget convierta enlaces HTML a relativos después de la descarga si no se especificó -k

32

La -kopción (o --convert-link) convertirá los enlaces en sus páginas web a relativos después de que finalice la descarga, como dice la página man:

Una vez completada la descarga, convierta los enlaces en el documento para que sean adecuados para la visualización local. Esto afecta no solo a los hipervínculos visibles, sino a cualquier parte del documento que se vincule a contenido externo, como imágenes incrustadas, enlaces a hojas de estilo, hipervínculos a contenido que no sea HTML, etc.

Entonces, si no lo especifiqué -k, ¿puedo wgetvolver a ejecutarlo después de la descarga y corregirlo? De ser así, ¿cuál sería el comando adecuado? Mi conjetura es wget -c [previous options used] [url]y ejecútelo en el mismo directorio de trabajo en el que se descargó el archivo.

Nathaniel
fuente
1
ciertamente podría procesar los archivos después de la descarga, pero no sé si wgethace esto. tu idea de probarlo -ces buena. ¡Hora de experimentar!
quack quijote
¿Tiene alguna utilidad a mano para convertir los enlaces, por casualidad? Corriendo en Windows, por cierto ...
Nathaniel
perl... sin guión preescrito, pero si quisiera una solución de bricolaje, eso es lo que usaría
quack quixote
Bien gracias. No tenga instalado Perl y tomaría mucho tiempo agarrarlo. Afortunadamente, encontré cómo hacer que wget haga el trabajo. Publiqué una respuesta.
Nathaniel el
por cierto, ActivePerl es como un puerto perl de Windows; es un instalador bastante pequeño, y estoy bastante seguro de que la mayoría de los módulos CPAN funcionan con él. activestate.com/activeperl
quack quixote

Respuestas:

23

Sí, puedes hacer wgetque lo hagas. Yo diría usar wget -nc -k [previous options] [previous url]. -nces no clobber. Desde la página del manual:

Cuando −ncse especifica, este comportamiento se suprime, y Wget se negará a descargar copias más nuevas del archivo.

Y la -kopción hace la conversión del enlace. Entonces, wget comienza a cavar en el servidor remoto, ve todos los archivos que ya tiene, se niega a volver a descargarlos y luego edita los enlaces HTML a relativo cuando está hecho. Agradable.

Nathaniel
fuente
3
No, esto no funciona para mí. Descargó el primer archivo (por ejemplo, index.html), vea que ya se ha descargado una parada. Si desea que wget funcione recursivamente, debe usar la opción de marca de tiempo (-K). Por lo tanto, wget debe solicitar que todos los encabezados coincidan si el archivo es más nuevo o no.
12
GNU Wget 1.13.3 construido en darwin11.1.0. Intentar usar ambas opciones al mismo tiempo daBoth --no-clobber and --convert-links were specified,only --convert-links will be used.
Ludovic Kuty
2
¿no preguntó tu pregunta sin -k?
barlop
8
Cf. Comentario de @ LudovicKuty: a partir de wget 1.13 --no-clobberno funciona --convert-links. Ver http://savannah.gnu.org/bugs/?31781 para más detalles.
David Moles
1
En caso de que a alguien le importe
berezovskyi