Tengo un par de cientos de archivos de código fuente HTML. Necesito extraer el contenido de un <div>elemento particular de cada uno de estos archivos, así que voy a escribir un script para recorrer cada archivo. La estructura del elemento es así:
<div id='the_div_id'>
<div id='some_other_div'>
<h3>Some content</h3>
</div>
</div>
¿Alguien puede sugerir un método mediante el cual pueda extraer el div the_div_idy todos los elementos secundarios y el contenido de un archivo utilizando la línea de comandos de Linux?
fuente

hxselectes más exigente con el formato de entrada quepup. Por ejemplo, estoy llegandoInput is not well-formed. (Maybe try normalize?)ahxselectdondepupsolo lo analizo.Pruebe
pup, una herramienta de línea de comandos para procesar HTML. Por ejemplo:fuente
Aquí hay un script de Perl no probado que extrae
<div id="the_div_id">elementos y sus contenidos usandoHTML::TreeBuilder.Si eres alérgico a Perl, Python sí
HTMLParser.PD No intentes usar expresiones regulares. .
fuente
Aquí está Ex one-liner para extraer esa parte de cada archivo:
Para guardar / reemplazar en el lugar, el cambio
-cqa!en-cxay quitar%psección. Para la recursividad, considere usar globbing (**/*.html).Básicamente, para cada búfer / archivo (
bufdo), realiza las siguientes acciones:/pattern- encuentra el patrónnorm- Comience a simular pulsaciones de teclas normales de Vin- saltar al siguiente patrón (requerido en modo Ex)vatd- eliminar la sección de etiqueta externa seleccionada (ver: saltar entre etiquetas html )ggdG- eliminar todo el búfer (equivalente a:%d)"2p- volver a pegar el texto eliminado anteriormenteQuizás no sea muy eficiente y no POSIX (
:bufdo), pero debería funcionar.fuente