• Publicidad

Extraer texto entre marcas HTML

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Extraer texto entre marcas HTML

Notapor jimr1984 » 2016-07-22 22:58 @999

Hola, buenas noches.

Por favor, si pueden ayudarme, necesito extraer texto entre las marcas HTML de este ejemplo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. <span class="field-content"><p><strong class="uppercase">CABRERA CONSIGNACIONES VENDE: lancha</strong> de 5 y 6 mts, de aluminio, marca LeveFord, con póliza, factura y chata incluida, nueva, entrega inmediata. Ref. 70204254 Av. Viedma # 206, primer anillo entre Ñuflo de Chaves y Warnes (C163636430)</p>
  2. </span>    </div>
  3. <span class="field-content"><p><strong class="uppercase">IMPORTADORA MENDOZA OFRECE: Micros</strong> Toyota Jumbo 2016 O km, gasolina, con garantía Toyota, en Bolivia c/sin financiamiento, entrega inmediata Cel. 73514774 - 73738700 (S1613333774)</p>
  4. </span>    </div>
  5. <span class="field-content"><p><strong class="uppercase">CABRERA CONSIGNACIONES VENDE: UTV,</strong> comander, canam, año 2013, 0 km negro, de fibra de carbono, cinturones de seguridad de 3 puntos, suspensión Fox, caños especiales, techo, parabrisas, retrovisores, parachoques delanteros y traseros originales, jala chata y chata de 2 ble eje reforzada, todo al día, entrega inmediata. Ref. 70204254 Av. Viedma # 206, primer anillo entre Ñuflo de Chaves y Warnes (C163636427)</p>
  6. </span>    </div>
  7. <span class="field-content"><p><strong class="uppercase">CABRERA CONSIGNACIONES VENDE: 2</strong> Vgtas. Toyota Land 2007 y 2008, Cruiser UX, importada por Toyosa doble tanque, diesel y gasolina, impecable. Entrega inmediata  Ref. 70204254 Av.Viedman # 206 Primer anillo (C163636442)</p>
  8. </span>    </div>
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


El contenido a extraer es lo que está entre class="uppercase">, todo lo que está aquí. </strong> también. Extraer todo esto hasta </p>

Resultado
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
título:  CABRERA CONSIGNACIONES VENDE: 2    msj:  Vgtas. Toyota Land 2007 y 2008, Cruiser UX, importada por Toyosa doble tanque, diesel y gasolina, impecable. Entrega inmediata  Ref. 70204254 Av.Viedman # 206 Primer anillo (C163636442)
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

Utilizo

m/<\/strong>(.*)<\/p>/mg y

m/<span\sclass="field-content"><p><strong\sclass="uppercase">(.*)<\/strong>/gm

Favor, si pueden ayudarme o algún módulo que pueda utilizar.

Algún módulo que me facilite esto, que me permita ingresar la marca de inicio, por ejemplo, </strong>, marca de final, </p>.

O con expresión regular, cómo podría realizarlo. Gracias.
jimr1984
Perlero nuevo
Perlero nuevo
 
Mensajes: 123
Registrado: 2012-11-25 07:11 @341

Publicidad

Re: Extraer texto entre marcas HTML

Notapor explorer » 2016-07-23 13:51 @619

Es muy sencillo usando los modificadores no avariciosos:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/env perl
  2. use feature 'say';
  3. use File::Slurp;
  4.  
  5. my $html = read_file('code_39555.txt');
  6.  
  7. while ($html =~ m{<p><strong class="uppercase">(?<titulo>.+?)</strong>(?<mensaje>.+?)</p>}g) {
  8.     say "título:   $+{titulo}     msj:  $+{mensaje}";
  9. }
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
La salida es:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
título:   CABRERA CONSIGNACIONES VENDE: lancha     msj:   de 5 y 6 mts, de aluminio, marca LeveFord, con póliza, factura y chata incluida, nueva, entrega inmediata. Ref. 70204254 Av. Viedma # 206, primer anillo entre Ñuflo de Chaves y Warnes (C163636430)
título:   IMPORTADORA MENDOZA OFRECE: Micros     msj:   Toyota Jumbo 2016 O km, gasolina, con garantía Toyota, en Bolivia c/sin financiamiento, entrega inmediata Cel. 73514774 - 73738700 (S1613333774)
título:   CABRERA CONSIGNACIONES VENDE: UTV,     msj:   comander, canam, año 2013, 0 km negro, de fibra de carbono, cinturones de seguridad de 3 puntos, suspensión Fox, caños especiales, techo, parabrisas, retrovisores, parachoques delanteros y traseros originales, jala chata y chata de 2 ble eje reforzada, todo al día, entrega inmediata. Ref. 70204254 Av. Viedma # 206, primer anillo entre Ñuflo de Chaves y Warnes (C163636427)
título:   CABRERA CONSIGNACIONES VENDE: 2     msj:   Vgtas. Toyota Land 2007 y 2008, Cruiser UX, importada por Toyosa doble tanque, diesel y gasolina, impecable. Entrega inmediata  Ref. 70204254 Av.Viedman # 206 Primer anillo (C163636442)
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

En cuanto a módulos, yo suelo usar Mojo::DOM o, sencillamente, desde la misma línea de comandos, usando el módulo ojo.pm:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
$ perl -Mojo -E 'x(b("code_39555.txt")->slurp)->find("span[class=field-content] p")->each(sub { $p = x($_[0]); say "título: ", $p->at("p strong")->text; say "mensaje: ", $p->at("p")->text })'
título: CABRERA CONSIGNACIONES VENDE: lancha
mensaje: de 5 y 6 mts, de aluminio, marca LeveFord, con póliza, factura y chata incluida, nueva, entrega inmediata. Ref.
70204254 Av. Viedma # 206, primer anillo entre Ñuflo de Chaves y Warnes (C163636430)
título: IMPORTADORA MENDOZA OFRECE: Micros
mensaje: Toyota Jumbo 2016 O km, gasolina, con garantía Toyota, en Bolivia c/sin financiamiento, entrega inmediata Cel. 7
3514774 - 73738700 (S1613333774)
título: CABRERA CONSIGNACIONES VENDE: UTV,
mensaje: comander, canam, año 2013, 0 km negro, de fibra de carbono, cinturones de seguridad de 3 puntos, suspensión Fox,
 caños especiales, techo, parabrisas, retrovisores, parachoques delanteros y traseros originales, jala chata y chata de 2
 ble eje reforzada, todo al día, entrega inmediata. Ref. 70204254 Av. Viedma # 206, primer anillo entre Ñuflo de Chaves y
 Warnes (C163636427)
título: CABRERA CONSIGNACIONES VENDE: 2
mensaje: Vgtas. Toyota Land 2007 y 2008, Cruiser UX, importada por Toyosa doble tanque, diesel y gasolina, impecable. Ent
rega inmediata Ref. 70204254 Av.Viedman # 206 Primer anillo (C163636442)
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Extraer texto entre marcas HTML

Notapor jimr1984 » 2016-07-25 14:57 @664

Muchas gracias... El problema fue solucionado. Gracias. :D
jimr1984
Perlero nuevo
Perlero nuevo
 
Mensajes: 123
Registrado: 2012-11-25 07:11 @341


Volver a Web

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 2 invitados