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_id
y todos los elementos secundarios y el contenido de un archivo utilizando la línea de comandos de Linux?
fuente
hxselect
es más exigente con el formato de entrada quepup
. Por ejemplo, estoy llegandoInput is not well-formed. (Maybe try normalize?)
ahxselect
dondepup
solo 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-cxa
y quitar%p
secció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