Ah algum tempo aki no fórum de CGI agente tava discutindo um meio de se fazer um script que pega os resultados do google de acordo com o resultado do wsdl deles. Então, eu prometi fazer o script qnt eu tivesse tempu e eis me aqui! huauauha bem eh isso. Ele eh bem simples soh q pra usá-lo ao menos é necessário fazer um registro no API Google pra pegar a API License Key deles. Clique aqui para um demo online. Abaixo vai o código dele, façam um bom proveito!! :
ATENÇÃO: O html em azul pode ser alterado para o visual do seu site, porém os códigos em verde devem permanecer intactos.
google.cgi
#!/usr/bin/perl
print "Content-type:text/html\n\n";
use SOAP::Lite;
use CGI::Carp(fatalsToBrowser);
################## CONFIGURAÇÕES ##################
my $max_botoes="10"; # Nº de Botoes
my $google_key='0000000000000000000000000000000'; # Coloque sua Google-key
my $google_wdsl = "http://api.google.co...leSearch.wsdl";
my $p_pagina = 10; # Max Resultados por Página... Max=10
###################################################
my $qs = $ENV{QUERY_STRING};
open(TEMPLATE,"template.html");
@template=<TEMPLATE>;
close(TEMPLATE);
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@conteudo = split(/&/, $buffer);
foreach $par (@conteudo) {
($campo, $valor) = split(/=/, $par);
$valor =~ tr/+/ /;
$valor =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$CAMPO{$campo} = $valor;
}
if (!$qs){
print qq|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Fast Searcher</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<style type="text/css">
.tabela { font-family:Tahoma; font-size:8pt; color:000000; font-weight:bold; border:2pt; border-style:outset; border-color:D3E5FA; }
.txt { font-family:Tahoma; font-size:8pt; color:FFFFFF; }
.txt2 { font-family:Tahoma; font-size:8pt; color:333333; font-weight:normal }
BODY { overflow:auto; text-align:center; }
INPUT { font-family:Tahoma; font-size:8pt; color:000000; font-weight:bold; }
.selected{ font-family:Tahoma; font-size:8pt; background-color:#6688DD; color:FFFFFF; font-weight:bold; }
</style>
</head>
<body bgcolor="#6487DC" text="#FFFFFF" link="#222222" vlink="#000000" alink="#000000">
<form action="?busca" method="post" name="" id="">
<table width="75%" border="0">
<tr bgcolor="#D3E5FA">
<td colspan="3" class="tabela"><div align="center">Fast Searcher</div></td>
</tr>
<tr>
<td>
<table width="100%" border="0" align="center" class="tabela" cellspacing="0" cellpadding="0">
<tr bgcolor="#ECF3FD">
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr bgcolor="#ECF3FD">
<td width="44%"><div align="right">Procurar por: </div></td>
<td width="17%"><div align="right">
<input name="q" type="text" id="q">
</div></td>
<td width="39%"><input type="submit" value="Pesquisar"></td>
</tr>
<tr bgcolor="#ECF3FD">
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td></td>
</tr>
</table>
<table cellpadding="0" cellspacing="0" width="100%" align="center">
<tr bgcolor="#D3E5FA">
<td bgcolor="#D3E5FA" class="tabela">
<div align="right"><font class="txt2">Fast Searcher by <a href="mailto:perl@os.pl">Whitesnake</a> </font></div>
</td>
</tr>
<tr>
<td class="txt"><div align="right"><br>powered by Google™</div></td>
</tr>
</table>
</td>
</tr>
</table>
</form>
</body>
</html>
|;
}
if ($qs){
$q = $CAMPO{q};
if (!$CAMPO{pag}){$CAMPO{pag} = 0;$tt=1;}else{$tt=$CAMPO{pag}+$p_pagina;}
my $google_search = SOAP::Lite->service("$google_wdsl");
my $resultados = $google_search -> doGoogleSearch( $google_key, $q, $tt, $p_pagina, "false", "", "false", "lang_pt", "UTF-8", "UTF-8" );
@{$resultados->{resultElements}} or print "Sem resultado";
my $total_results = my $total_paginas = $resultados ->{'estimatedTotalResultsCount'};
my $total_paginas=int($total_results/$p_pagina);
if($total_paginas >= 990){$total_paginas=990;}
$pagina_atual = $CAMPO{pag};
foreach $resultado (@{$resultados->{resultElements}}) {
$html=qq|<a href="$resultado->{URL}" target="_blank">$resultado->{title}</a>
<br>
<font color="333333">$resultado->{snippet}</font>
<br>$resultado->{URL}<br><br>
|;
push (@html, $html);
}
if($pagina_atual ne "0"){
$ant=$pagina_atual-1; # Página anterior
$A=qq|<td>
<form action="?busca" method="post" name="" id="">
<input name="q" type="hidden" id="query" value="$q">
<input name="pag" type="hidden" id="query" value="$ant">
<input type="submit" value="< Anterior ">
</form>
</td>|;
push(@A,$A);
}else{
$B=qq|
<td>
<form name="form">
<input type="submit" value="< Anterior " disabled>
</form>
</td>|;
push(@B,$;
}
if($total_paginas <= $max_botoes){
for ($p=0; $p<=$total_paginas;$p++){
$n=$p+1; if($n < 10){$n = "0".$n;}
if($p eq $CAMPO{pag}){
$C=qq|<td>
<form action="?busca" method="post" name="" id="">
<input name="q" type="hidden" id="query" value="$q">
<input name="pag" type="hidden" id="query" value="$p">
<input type="submit" value=" $n " class="selected">
</form>
</td>|;
push (@C,$C);
}else{
$D=qq|<td>
<form action="?busca" method="post" name="" id="">
<input name="q" type="hidden" id="query" value="$q">
<input name="pag" type="hidden" id="query" value="$p">
<input type="submit" value=" $n ">
</form>
</td>|;
push (@D,$D);
}
}
}else{
for ($p=$CAMPO{pag}; $p<=$CAMPO{pag}+$max_botoes-1;$p++){
$n=$p+1; if($n < 10){$n = "0".$n;}
if($p eq $CAMPO{pag}){
$E=qq|<td>
<form action="?busca" method="post" name="" id="">
<input name="q" type="hidden" id="query" value="$q">
<input name="pag" type="hidden" id="query" value="$p">
<input type="submit" value=" $n " class="selected">
</form>
</td>|;
push(@E,$E);
}else{
$F=qq|<td>
<form action="?busca" method="post" name="" id="">
<input name="q" type="hidden" id="query" value="$q">
<input name="pag" type="hidden" id="query" value="$p">
<input type="submit" value=" $n ">
</form>
</td>|;
push(@F,$F);
}
}
}
if($pagina_atual ne $total_paginas){
$prox=$pagina_atual+1;# Próxima página
$G=qq|<td>
<form action="?busca" method="post" name="" id="">
<input name="q" type="hidden" id="query" value="$q">
<input name="pag" type="hidden" id="query" value="$prox">
<input type="submit" value=" Próximo >">
</form>
</td>|;
push(@G,$G);
}else{
$H=qq| <td>
<form name="form">
<input type="submit" value=" Próximo >" disabled>
</form>
</td>|;
push(@H,$H);
}
}
foreach(@template){s/<\% RESULTADOS \%>/@html/;s/<\% PAGINACAO \%>/@A @B @C @D @E @F @G @H/;}
print @template;
Agora você deve criar um arquivo com o nome template.html, ele terá o visual da página de resposta, personalizado por você, só não remova as tags <% RESULTADOS %> e <% PAGINACAO %>especiais ou o script não funcionará. Envie-o para a mesma pasta do google.cgi
template.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Fast Searcher</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
.tabela2 { font-family:Tahoma; font-size:8pt; color:000000; font-weight:bold; border:2pt; border-style:outset; border-color:D3E5FA; }
.tabela { font-family:Tahoma; font-size:8pt; color:FFFFFF; font-weight:bold; border:2pt; border-style:outset; border-color:D3E5FA; }
.txt { font-family:Tahoma; font-size:8pt; color:FFFFFF; }
.txt2 { font-family:Tahoma; font-size:8pt; color:333333; font-weight:normal }
BODY { overflow:auto; text-align:center; }
INPUT { font-family:Tahoma; font-size:8pt; color:#333333; font-weight:bold; }
.selected{ font-family:Tahoma; font-size:8pt; color:#3355FF; font-weight:bold; }
</style>
</head>
<body bgcolor="#6487DC" text="#FFFFFF" link="#222222" vlink="#000000" alink="#000000">
<table width="75%" border="0" cellspacing="0" cellpadding="0" class="tabela">
<tr bgcolor="#D3E5FA">
<td colspan="3" class="tabela2">
<div align="left">Fast Searcher</div>
</td>
</tr>
<tr>
<td>
<table width="100%" border="0" align="center" class="txt2" bgcolor="#ECF3FD">
<tr>
<td colspan="3">
<div align="left">
Procurar por:<form action="?busca" method="post" name="" id="">
<input name="q" type="text" id="query">
<input type="submit" value="Pesquisar">
</form>
</div>
<div align="right"> </div>
</td>
</tr>
<tr>
<td colspan="3"> </td>
</tr>
<tr>
<td colspan="3"><% RESULTADOS %></td>
</tr>
<tr>
<td colspan="3">
<table align="center" cellpadding="0" cellspacing="0" class="txt"><% PAGINACAO %></tr>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
<table cellpadding="0" cellspacing="0" width="75%" align="center">
<tr bgcolor="#D3E5FA">
<td class="tabela">
<div align="right">
<font class="txt2">Fast Searcher by <a href="mailto:perl@os.pl"> Whitesnake </a></font>
</div>
</td>
</tr>
<tr>
<td class="txt">
<div align="right"><br>powered by Google™</div>
</td>
</tr>
</table>
</form>
</body>
</html>
Última Atualização: 01/02/2004