• Publicidad

Extracción del contenido de una etiqueta HTML

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Extracción del contenido de una etiqueta HTML

Notapor Davidlig » 2006-05-31 16:58 @748

Hola, necesito ayuda
<span id="prueba">12345</span>

¿Cómo se haría para extraer el número que está en esa etiqueta?

Gracias de antemano ;)
Última edición por Davidlig el 2006-05-31 17:08 @755, editado 1 vez en total
Davidlig
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2006-05-31 16:57 @748
Ubicación: Pontevedra

Publicidad

Notapor explorer » 2006-05-31 17:05 @753

Con una expresión regular, por ejemplo.

Si sólo hay números, la solución más sencilla, es la obvia:
Código: Seleccionar todo
$x = '<span id="prueba">12345</span>';
# Buscamos un conjunto de dígitos en toda la línea:
($extracto) = $x =~ m/(\d+)/;
print $extracto;

Si queremos extraer todo lo que haya dentro de la etiqueta span, entonces:
Código: Seleccionar todo
$x = '<span id="prueba">12345</span>';
($extracto) = $x =~ m#>(.+)</span>#;
print $extracto;
Esto no parece muy claro, pero funciona en el ejemplo dado. Lo que estamos haciendo es quedarnos (()) con todos los caracteres (.+?) que estén entre la etiqueta de cierre (</span>) y el inmediatamente (?) ángulo de cierre de la etiqueta anterior (>), que, presumiblemente será el de apertura de span (si el html está bien escrito), por eso no la ponemos en la expresión regular.
Última edición por explorer el 2006-05-31 17:07 @755, editado 1 vez en total
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor Davidlig » 2006-05-31 17:07 @754

esto ya me lo respondistes en el otro foro y no funciona :S me devuelve igual (lo he probado tal cual), saludos.
Davidlig
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2006-05-31 16:57 @748
Ubicación: Pontevedra

Notapor explorer » 2006-05-31 17:08 @755

Mira que el resultado queda en la variable $extracto, no en la $x...
Código: Seleccionar todo
perl -le '$x = q(<span id="prueba">12345</span>); ($extracto) = $x =~ m#>(.+)</span>#; print $extracto'
12345
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor kidd » 2006-05-31 17:10 @757

Hola:

En el sitio hay un par de tutoriales que te dan una breve introducción a las expresiones regulares. Te recomiendo que los leas para que tengas una idea más extensa de como funciona la solución que explorer te mostró:
http://perlenespanol.com/archives-tut/c ... lares.html


Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor Davidlig » 2006-05-31 17:18 @762

ahora sí, muchas gracias fallo mío :(
Davidlig
Perlero nuevo
Perlero nuevo
 
Mensajes: 9
Registrado: 2006-05-31 16:57 @748
Ubicación: Pontevedra


Volver a Básico

¿Quién está conectado?

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