htmlq: extraer contenido de un HTML en Linux
Es posible que necesites extraer contenido de un HTML. Y tal vez ya usas el comando jq para extraer datos de documentos JSON, pero con htmlq tendrás una herramienta similar a ésta, incluso está escrita también en lenguaje de programación Rust, pero para HTML.
La herramienta htmlq está disponible para otros sistemas tipo Unix, y no solo para Linux, por lo que la podrás usar también en FreeBSD, macOS, etc. Además, usa selectores CSS para extraer los fragmentos de contenido de los archivos .html. Así es como se apunta a los elementos que se quiere de una página web que necesitas. Por ejemplo, podrás extraer las imágenes, o el texto, etc., de una URL.
Lo primero es instalar htmlq en tu Linux. Por ejemplo, tomando como referencia una distro DEB (para otras sería similar, pero con el gestor de paquetes que corresponda), podemos usar:
sudo apt install cargo cargo install htmlqcargo es el gestor de paquetes de Rust, como pip lo es para el lenguaje Python… Con él podrás instalar multitud de paquetes creados en Rust de forma fácil. Por cierto, también necesitarás tener instalado el paquete rustc si no lo tienes ya en tu distro.
Una vez instalado, su uso es sencillo. Por ejemplo, imagina que quieres encontrar contenido en una página por su ID:
curl -s url | htmlq '#css-selector' curl -s url2 | htmlq '#css-selector' curl -s https://www.linuxadictos.com/ | htmlq --pretty '#content' | more
O, para encontrar todos los enlaces de una página, puedes usar este otro comando:
curl -s https://www.linuxadictos.com | htmlq --attribute href a
Por último, si tienes dudas sobre las opciones disponibles en htmlq, puedes consultar su ayuda con este comando:
htmlq --help
Espero que te haya servido de ayuda este pequeño tutorial. Como ves, su uso es sencillo, y lo puedes combinar con herramientas como curl, entre otras.