Articulos de Colaboradores
Codigos Fuente
Compiladores
Documentos y Manuales
Programas y Librerias
Recursos y Articulos
Videotutoriales
Servidores (Aplicaciones)
Controles ActiveX

Analisis SEO
Conocer PageRank
Encriptar JS/HTML
Convertir HTML a JavaScript
Convertir HTML/JS a PHP
Tablas ASCII/HTML
Base Windows API
Directorio de Empresas
Libros de Informatica
Rotador de Banners

ARTICULOS TECNICOS SOBRE PROGRAMAS Y PROGRAMACION
PROGRAMACION Y DISEÑO PARA PROGRAMADORES Y WEBMASTERS


Buscador de contenidos personal - Programacion y Codigos en Perl






Programa un Buscador para tu Sitio
Christian Gustavo Riva

Un buscador de contenidos en un Sitio Web no solo es sinonimo de cierto prestigio o calidad en el desarrollo, sino que ademas es una excelente y utilisima opcion para los usuarios que lo visiten, particularmente si tienes muchas paginas.

El siguiente codigo te mostrara como puedes hacer tu mismo un Buscador en Perl, de manera muy simple y sin ningun enfasis en el diseño de la pagina de resultados.
La implementacion del buscador se encuentra dividida en 3 etapas:

  1. El codigo en Perl, ubicado en la carpeta CGI-BIN (o similar) de tu sitio.
  2. El mini formulario de busqueda dentro de tus paginas HTML
  3. Los delimitadores de "bloques" dentro de cada una de las paginas HTML de tu Sitio que quieras que sean exploradas.
<FORM ACTION="http://www.tu-dominio/cgi-bin/buscador.pl">
Palabras a buscar: <INPUT TYPE=TEXT NAME=topicos></FORM>

(lo unico importante de este formulario es nombrar "topicos" a la variable donde se deben ingresar las palabras a buscar, y la ubicacion correcta del script "buscador.pl" dentro de tu sitio).

Los delimitadores de bloques son solo dos TAGS HTML que deberas agregar en todas las paginas que quieras que sean dadas como resultados de las busquedas.
Estos dos TAGS (inicio y final del bloque) deberan estar al comienzo del texto que quieras que sea analizado, y al final del mismo.
Un ejemplo seria el siguiente:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Este texto no quiero que sea analizado por el buscador
por lo que sera omitido de la busqueda
<!$>
pero este texto SI quiero que sea analizado y aparezca en los resultados
si el usuario ingreso alguna palabra incluida en este bloque
<!\$>
Finalmente, este texto tampoco sera analizado ya que no se encuentra
encerrado entre los TAGS delimitadores
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

La posibilidad de delimitar por bloques determinados contenidos de cada una de las paginas te permitira omitir de los resultados de busqueda textos irrelevantes (menues, cabeceras, etc).

Recuerda que el codigo es para uso libre y su finalidad es introducirte en los conceptos que trata y animarte a que experimentes por tu cuenta.
Si publicas u ofreces a terceros una version modificada del mismo, no olvides mencionar al autor original como figura en su cabecera.

BUSCADOR.PL
###################################
# (C) 2001 Christian Gustavo Riva #
# https://www.programasprogramacion.com #
###################################
#!/usr/bin/perl

use strict;

## Utilizamos el modulo CGI para tomar el formulario Web:
use Cwd;
my $directorio = getcwd;
use CGI;
my $cgi = new CGI;

## Capturamos las palabras a buscar:
my $topicos = $cgi->param('topicos');

## Direccion URL de nuestro Sitio Web:
## (no agregues un slash "/" al final!!)
my $host = 'https://www.programasprogramacion.com';

my $coincidencias = 0;
my $titulo;

print "Content-type: text/html\n\n";

## Comenzamos a dar salida a los resultados:
print "Buscando por <B>$topicos</B>:<BR>";

## Abrimos (si podemos) el directorio a explorar:
unless( opendir(DIR, $directorio ) )
{ print "Error: $!"; exit; }

## Codigo HTML para mostrar resultados numerados:
print '<ol>';

## Tomamos uno por uno a los archivos del directorio:
while ($_=readdir(DIR))
{
## No vamos a analizar carpetas ni archivos que no
## tengan extension .HTM o .HTML:
next if -d $_ || $_ !~ /.htm/;

## Abrimos la pagina (si podemos):
if( open( PAGINA, "$directorio"."$_" ) )
{
## Cargamos toda la pagina en una matriz
## y cerramos el archivo:
my @pagina = <PAGINA>;
close( PAGINA );

## Convertimos la matriz @pagina en una
## variable sin saltos de linea:
## (requerido para analizarlas)
my $pagina = join (" ", @pagina);
$pagina =~ s/\n/ /g;

## Solo analizamos la pagina si encontramos
## los delimitadores <!$> ... <!/$>
if( $pagina =~ /<\!\$>(.*)<\!\/\$>/ )
{
## Copiamos en $bloque el texto contenido
## entre los delimitadores:
my $bloque = $1;

## ¿Se encuentran los topicos buscados en
## el bloque de la pagina?
if( $bloque =~ /$topicos/gi )
{
$coincidencias++;

## Tomamos el Titulo de la pagina, o en
## su defecto le asignamos un nombre general:
if ($pagina =~ /<title>(.*)<\/title>/i)
{ $titulo = $1; }
else { $titulo = "Pagina sin nombre"; }

## Damos salida al resultado en HTML con el
## Titulo y Direccion Web de la pagina:
print "<li><a href=\"$host/$_\">";
print "$titulo</a></li><BR>";
}
}
}
}

close (DIR);

print '</ol>';

print "<BR>Paginas encontradas: <B>$coincidencias</B>";
 





ProgramasProgramacion.com (ex-CGR Software.com)
© 2001-2024 C.G.R. @ Buenos Aires, Republica Argentina

Contacto | Privacidad