¿Cómo convertir un archivo HTML con imágenes referenciadas en la línea de comando a un archivo web?

Bajo macOS, quiero convertir archivos HTML con imágenes referenciadas en la línea de comando/programadamente a archivos web .

Dado un archivo de muestra sample.htmlque contiene:

<html><body>
<h1>File with resource</h1>
<p>This file shows text and references an image.</p>
<img src="sample.jpg" />
</body></html>

y una imagen sample.jpgen el mismo directorio, puedo ver el archivo html en cualquier navegador y se procesa con la imagen. Para convertir a un archivo web probé:

textutil -convert webarchive sample.html

pero el resultado sample.webarchive, cuando se abre en Safari, no representa la imagen, aunque la contiene (ver comentarios).

¿Cómo puedo hacer la conversión desde la línea de comando correctamente, para que el resultado contenga y represente la imagen? ¡Después de todo, para eso están los archivos web!

¿Funciona si abre sample.htmlen Safari, crea el archivo web desde allí, luego retira ambos archivos y abre el archivo en Safari?
@patrix ¡Buena pregunta! Lo probé y, como era de esperar, Safari puede hacerlo: cuando Safari guarda el archivo, se guarda de tal manera que, cuando se abre y renderiza, aparece la imagen. - Extrañamente, el tamaño del archivo del archivo de Safari y el archivo de textutil son muy similares, así que supongo que el archivo de textutil contiene la imagen, simplemente no se referencia correctamente para la representación...
Bueno, de hecho lo hace (puede consultar con plutil -p WEBARCHIVE). Sin embargo, no miré las diferencias.
@patrix ¡Interesante! Gracias por el puntero a plutil(Sabía que los archivos web usan el plistformato, pero no pensé en analizarlos con plutil. Investigaré con más detalle.

Respuestas (2)

Use la herramienta webarchiver(que puede instalar a través de brew install webarchiver):

webarchiver -url sample.html -output sample.webarchive

El archivo web producido contiene la imagen y Safari muestra la imagen cuando muestra el archivo web.

Creo que la línea de comandos no es consciente de que se haya incluido ninguna imagen.

Probé una página web simple con imagen+texto y la abrí con Safari.

Si elige Archivo -> Guardar como .. 'archivo web', puede ver en el archivo web creado que la imagen se adjunta al final del archivo.

Es bastante obvio que Safari está usando alguna función interna de Swift/Objective-C para implementar la imagen.

Si elige obtener el html y tiene la imagen como referencia, parece ignorar la imagen y solo generar el texto (a través de textutil).

No confiaría en los archivos web al descargar páginas web; en su lugar, use wget o curl o scrapers como scrapy/beautifulSoup y descárguelos.

Sé que es conveniente tener 1 archivo, pero esa no es la mejor manera de guardar imágenes y eso hace que sea bastante difícil extraerlas después.

Gracias por mirar la pregunta, pero según tengo entendido, su "respuesta" establece principalmente mi problema: que "la línea de comandos", es decir, no puede textutilcrear un archivo web adecuado, al menos no como yo lo llamo. Busco una herramienta/procedimiento de trabajo para que la línea de comando haga exactamente eso.