• Publicidad

Buscar información en página web

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

Buscar información en página web

Notapor jacks » 2012-01-16 08:45 @406

Hola a todos. Me gustaría saber si la siguiente acción que voy a mencionar se podría hacer mediante un script en Perl.

Cuando tú manualmente accedes a una página web y pulsas Editar->Buscar, cuando introduces lo que deseas buscar y lo encuentra, cada palabra encontrada aparece destacada en un color amarillo.

¿Se podría hacer mediante un script?
jacks
Perlero nuevo
Perlero nuevo
 
Mensajes: 148
Registrado: 2011-04-05 11:14 @510

Publicidad

Re: Buscar información en página web

Notapor explorer » 2012-01-16 10:07 @463

Sí, solo hay que modificar el código HTML que se generó, incorporando estilos para que el fondo del texto cambie. El resultado es la misma página, pero con unas pocas marcas más.

Para buscar la palabra (suponemos que solo es una), puedes usar la expresión regular

$html =~ s{\b$palabra\b}{<span class=".fondoamarillo">$palabra</span>}g;

Aquí, estamos haciendo un cambio en todas las palabras encontradas, para agregarles marcas <span>, que modifican el estilo de ese texto, con otro que tengamos definido en las hojas CSS.

Usamos \b, que indica "límite de palabra". Así, buscamos por toda la palabra, y solo esa palabra (sin más caracteres por delante ni por detrás).
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

Re: Buscar información en página web

Notapor jacks » 2012-01-16 11:35 @524

Hummm... sí, pero, por ejemplo, yo he encontrado una noticia nueva con mi programa en la página web generando un RSS. Y por ejemplo ahora quiero pulsar sobre la URL de esa página y pasándole como parámetro de búsqueda el título de la noticia, que esta vez cuando se abra en mi navegador se muestre en amarillo.

¿Cómo hago eso, mejor dicho, cómo lo tengo que poner?
jacks
Perlero nuevo
Perlero nuevo
 
Mensajes: 148
Registrado: 2011-04-05 11:14 @510

Re: Buscar información en página web

Notapor explorer » 2012-01-16 12:55 @579

Aquí hay un problema: cuando estás pulsando en el enlace, el navegador va a pedir la página directamente, por lo que no puedes hacer nada, ya que no hay peticiones a tu código.

Una forma de resolverlo es que sea un programa tuyo el que modifique los enlaces, para que las peticiones le lleguen a él. Entonces lo que hace es bajarse la página HTML del enlace, luego le agrega la modificación del estilo, y eso es lo que devuelve al usuario.

Los enlaces a gráficos, fotos y resto de código JavaScript debería seguir funcionando, y bajando del sitio original.

Otra forma mucho más elaborada es mediante el motor XUL, pero su complejidad se escapa bastante de este foro.
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

Re: Buscar información en página web

Notapor jacks » 2012-01-17 17:10 @757

Hola explorer. A ver si te he entendido bien. ¿Sería de esta manera o necesito algún módulo de CPAN?

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $palabra = "CONTAMOS";
  2.  
  3. $html = "geneerado.html";
  4.  
  5. $html =~ s{\b$palabra\b}{<span class=".fondoamarillo">$palabra</span>}g;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4
jacks
Perlero nuevo
Perlero nuevo
 
Mensajes: 148
Registrado: 2011-04-05 11:14 @510

Re: Buscar información en página web

Notapor explorer » 2012-01-17 18:53 @828

En $html debes tener el código HTML que quieres modificar. Ahí veo que solo tienes el nombre del archivo HTML. No lo has leído.
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

Re: Buscar información en página web

Notapor jacks » 2012-01-18 06:14 @301

Hola explorer. Ahora ya creo que lo he hecho correctamente puesto que cargo el contenido en la variable, lo modifica y genera otro .html. Los cambios los hace bien pero cuando lo abro con el navegador, no se muestra nada en color :? ¿Eso por qué es?

use warnings;
use File::Slurp;

my $html = read_file( 'geneerado.html' ) ;




my $palabra = "el";

$html =~ s{\b$palabra\b}{<span class=".fondoamarillo">$palabra</span>}g;

print $html,"\n";


write_file( 'creado.html', $html ) ;
jacks
Perlero nuevo
Perlero nuevo
 
Mensajes: 148
Registrado: 2011-04-05 11:14 @510

Re: Buscar información en página web

Notapor explorer » 2012-01-18 07:13 @342

La página HTML debe saber también cómo es el estilo .fondoamarillo, por lo que habría que incluir una línea más de sustitución para agregar las líneas de definición CSS de ese estilo.

Una opción más rápida es, sencillamente, definir el estilo en la propia marca <span>:

$html =~ s{\b$palabra\b}{<span style="background-color:yellow;">$palabra</span>}g;
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

Re: Buscar información en página web

Notapor jacks » 2012-02-01 17:05 @753

Hola. Una pregunta: ¿se podría comprobar si un patrón de búsqueda funciona? Es decir si ese patrón me sacará información.

Por ejemplo, tengo 3 patrones de búsqueda para sacar las noticias de una página web. Si un patrón no saca ninguna información no pasa nada pero si ninguno de los tres saca información me gustaría saberlo. ¿Se puede comprobar eso? Yo había pensado que con el código de la página web hacer un "if exists..." el patrón entre el código. ¿Alguna solución?
jacks
Perlero nuevo
Perlero nuevo
 
Mensajes: 148
Registrado: 2011-04-05 11:14 @510

Re: Buscar información en página web

Notapor explorer » 2012-02-01 17:18 @763

El operador =~ devuelve verdadero o falso según haya podido realizar su trabajo.

my $cambio1 = $html =~ s{\b$palabra\b}{<span class=".fondoamarillo">$palabra</span>}g;

De esa manera, puedes saber qué cambios han ocurrido.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $hubo_cambios = $cambio1 + $cambio2 + $cambio3;
if (not $hubo_cambios) {
    say "Atención, no hubo cambios en la página";
}
Coloreado en 0.001 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: 14486
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Siguiente

Volver a Básico

¿Quién está conectado?

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

cron