Jump to content


Script: Busca Google


  • Faça o login para participar
18 replies to this topic

#1 Whitesnake

Whitesnake
  • Visitantes

Posted 23/01/2005, 20:26

E aee galera, frmz?
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! :D 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!! :lol: :

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>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
          </tr>
          <tr bgcolor="#ECF3FD">
            <td width="44%"><div align="right">Procurar por:&nbsp;</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>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</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>&nbsp;</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,$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">&nbsp;</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&nbsp;</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

#2 Limiar

Limiar

    Que alerta é esse aí embaixo?

  • Usuários
  • 118 posts
  • Sexo:Masculino
  • Localidade:Alto Paraíso -- GO
  • Interesses:música, belezas naturais, esperanto, fotografia, informática, webdesign, photoshop, dreamweaver, CGI, PHP

Posted 24/01/2005, 07:53

Olá,

Experimentei o demo online. Não está pulando página, como o Google. Está pulando item por item. Também é estranho que a pesquisa resultou um pouco diferente de quando pesquisei direto no Google! :o

Mais uns retoques...

#3 jgcl

jgcl

    João Gabriel C. Laass, Serra/ES

  • Usuários
  • 559 posts
  • Sexo:Não informado
  • Localidade:Serra / ES
  • Interesses:Tudo!

Posted 24/01/2005, 11:42

Limiar: Você pegou alguma google api?

Aqui deu certinho...

flw
João Gabriel
Site >> joaogabriel.org
CGiClube.net >> http://www.cgiclube.net
Vitória Perl Mongers >> http://vitoria.pm.org

#4 prix

prix

    Duracell: E Duram, Duram, Duram...

  • Usuários
  • 562 posts
  • Sexo:Não informado
  • Interesses:keep walking ...
    jonny walker

Posted 26/01/2005, 19:49

olha pelos testes feitos os resultados podem ser or mesmo porem eles virao em diferentes ordens sendo q nao adianta comparar com o site do google.

O resultado sera o mesmo em forma diferente.

Ele vira com uma ordenação aleatoria tornando o mesmo diferente da ordem do google.

Edição feita por: prix, 26/01/2005, 19:50.

print join'',(reverse  map{/d([a-z])d/}split/W/,'$5x6@314&60f%3i4#moo^1r2#moo^1p2')," ", pack ("B*",'01110000011001010111001001101100')," ", pack ("B*",'011011010110111101101110011010110110010101111001'), "n";
sleep 5;


E-Mails, topicos ou mensagens privadas não serão respondidas a menos que eu considere uma relevancia/necessidade na mesma.

#5 eltonfranca

eltonfranca

    Normal

  • Usuários
  • 66 posts
  • Sexo:Masculino

Posted 30/01/2005, 10:53

Gostaria d saber como posso colocar esse sistema de busca com meu design e a pagina de resultado com meu design tb.
Atenciosamente,
Elton França

#6 jgcl

jgcl

    João Gabriel C. Laass, Serra/ES

  • Usuários
  • 559 posts
  • Sexo:Não informado
  • Localidade:Serra / ES
  • Interesses:Tudo!

Posted 30/01/2005, 11:21

Gostaria d saber como posso colocar esse sistema de busca com meu design e a pagina de resultado com meu design tb.

pode
João Gabriel
Site >> joaogabriel.org
CGiClube.net >> http://www.cgiclube.net
Vitória Perl Mongers >> http://vitoria.pm.org

#7 Whitesnake

Whitesnake
  • Visitantes

Posted 30/01/2005, 13:10

Cara você tem que ter um conhecimento básico sobre CGI. Os códigos html estão entre as tags: print qq| --- |;, mais tome cuidado para não remover as váriáveis.


Até

#8 Hospedar-se .Com

Hospedar-se .Com

    Super Veterano

  • Usuários
  • 1500 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 30/01/2005, 18:13

Só não remover os "$seilaoque" e alterar o que estiver entre os qq| |;

como o whit falou acima

O, personaliza mais o script ai :D faz ele abrir um arquivo de template e mostrar o resultado la, é é mais fácil pros outros alterarem (y) , seu script ficou bom, se colocar isso, fica melhor ainda

#9 Whitesnake

Whitesnake
  • Visitantes

Posted 30/01/2005, 18:15

Blz eu tava pensando em fazer isso mesmo...tipo o script ainda ta com vários bugs... qnd eu arrumar ele direitin eu atualizo o cód...

flws

#10 Whitesnake

Whitesnake
  • Visitantes

Posted 30/01/2005, 19:12

Prontwo

#11 leanjo

leanjo

    Doutor

  • Usuários
  • 912 posts
  • Sexo:Não informado
  • Interesses:...

Posted 09/06/2006, 05:12

o que precisa ter instalado na makina pra rodar?

#12 Whitesnake

Whitesnake
  • Visitantes

Posted 10/06/2006, 16:57

Você deve executá-lo em um servidor com suporte a CGI/Perl

#13 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 25/09/2017, 16:24

Finasteride 5mg Without A Prescription Walgreens Propecia Side Effects cialis online Cephalexin And Blood Sugar Level Viagra Generika Gunstig Kaufen Cialis 20 Mg Einnehmen
Online Cialis Sales Priligy Dapoxetina Opinioni Was Kostet Viagra In Griechenland cheap cialis Viagra Pressione Generic Tab Bentyl Purchase Internet Online Free Doctor Consultation Amoxicillin Birth Contro Pill
Kamagra Oral Jelly Miglior Prezzo buy cialis Delivered Amoxicillin Avec Clomid Tests D Ovulation
Kamagra Livraison Rapide Achat Rezeptfrei Viagra Apotheke cialis Amoxicillin Symtoms

#14 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 09/10/2017, 08:28

Half Dose Propecia Finpecia Canada viagra Viagra Und Cialis Als Verzogerungsmittel Eli Lilly Cialis
Where To Buy Cialis Online Safely Cephalexin Urinary Track Infection viagra Antabuse Greece Viagra Express Mail Broadway Services Viagra
Pak Online Overnight Z Pak Zithromax Kann Man Viagra Legal Kaufen buy levitra professional online Cephalexin Safe In Pregnancy Cialis Meglio 10 O 20 Mg Dapoxetine Price

#15 RonsisM

RonsisM

    Super Veterano

  • Usuários
  • 15724 posts
  • Sexo:Masculino
  • Localidade:Plovdiv

Posted 24/10/2017, 23:53

Kamagra Viagra Erfahrung online pharmacy Fluoxetine 40mg Over Night Farmacia Viagra Generico Azithromycin Part Of Keflex Family
Baclofene Intoxication viagra Acheter Baclofen En France Diclofenac Buy Online
Cialis Mezza Pastiglia viagra online pharmacy Medikament Cialis 20mg Achat Viagra Original




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq