Jump to content


Photo

Script Do Google! Preciso De Sua Ajuda!


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

#1 *º[ ¤ gLx ¤ ]º*

*º[ ¤ gLx ¤ ]º*

    Normal

  • Usuários
  • 87 posts
  • Sexo:Não informado

Posted 10/10/2004, 13:51

Olá!

Há pouco tempo atrás instalei o GoogleAPIS, um script que o Google tem que vc pode inserir em seu site um script de Busca idêntica ao Google ( http://www.google.com/apis ). Baixei o script, peguei o código de validação.. MAS NÃO TENHO A MÍNIMA IDÉIA do que tenho que fazer!! Aliás, eu não entendo NADA DE CGI.. absolutamente nada.. Uma outra coisa que estranhei, é que não vi nenhum arquivo nesse script com a extensão cgi... Só tinha class...

Estou cada vez mais confuso..

Por isso preciso da ajuda de vocês.. desculpem, mas como disse, não entendo nada de CGi, se vcs puderem fazer um tutorial MUITO DETALHADO, explicando cerinho o que devo fazer, agradeceria imensamente..

Bem, espero ajuda de vcs.. eh isso ae.. flw

Edição feita por: *º[ ¤ gLx ¤ ]º*, 10/10/2004, 13:52.


#2 Whitesnake

Whitesnake
  • Visitantes

Posted 10/10/2004, 14:36

Nossa! já temos três tópicos com este assunto, espero que este seja o último....

Vc não precisa baixar o API da Google.....

Fiz um exemplo q retorna os 10 primeiros resultados do Google:

#!/usr/bin/perl
print "Content-type:text/html\n\n";
use SOAP::Lite;

$google_key='SUA GOOGLE API KEY';
$google_wdsl = "http://api.google.co...leSearch.wsdl";
$qs = $ENV{QUERY_STRING};

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=iso-8859-1">
<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; }
BODY    { overflow:auto; text-align:center; }
INPUT   { font-family:Tahoma; font-size:8pt; color:000000; font-weight:bold; }
</style>
</head>

<body bgcolor="#6487DC" text="#FFFFFF" link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF">
<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="txt">
          <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <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>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td><div align="right">powered by Google™</div></td>
          </tr>
        </table></td>
  </tr>
</table>
</form>
</body>
</html>|;

}




if ($qs){

$q = $CAMPO{q};

my $google_search = SOAP::Lite->service("$google_wdsl");

my $resultados = $google_search -> doGoogleSearch( $google_key, $q, 0, 10, "false", "", "false", "lang_pt", "UTF-8", "UTF-8" );

@{$resultados->{resultElements}} or print "Sem resultado";





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=iso-8859-1">
<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; }
INPUT { font-family:Tahoma; font-size:8pt; color:000000; font-weight:bold; }
</style>
</head>

<body bgcolor="#6487DC" text="#FFFFFF" link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF">
<form action="?busca" method="post" name="" id="">
<table width="75%" border="0">
        <tr bgcolor="#D3E5FA">
          <td colspan="3" class="tabela"><div align="left">Fast Searcher</div></td>
        </tr>
  <tr>
    <td><table width="100%" border="0" align="center" class="txt">
          <tr>
            <td colspan="3"><div align="left">Procurar por:
                <input name="q" type="text" id="query">

                <input type="submit" value="Pesquisar">
              </div>
              <div align="right"> </div></td>
          </tr>
          <tr>
            <td colspan="3">&nbsp;</td>
          </tr>
          <tr>
            <td colspan="3">|;

foreach my $resultado (@{$resultados->{resultElements}}) {

print qq|
<a href="$resultado->{URL}" target="_blank">$resultado->{title}</a>
<br><font color="CCCCCC">$resultado->{snippet}</font><br>
$resultado->{URL}<br><br>
|;

}

print qq|</td>
          </tr>
          <tr>
            <td colspan="3">&nbsp;</td>
          </tr>
          <tr>
            <td width="44%">&nbsp;</td>
            <td width="17%">&nbsp;</td>
            <td width="39%"><div align="right">powered by Google™</div></td>
          </tr>
        </table></td>
  </tr>
</table>
</form>
</body>
</html>
|;
}



Você salva este arquivo como por exemplo busca.cgi e manda para a pasta cgi-bin de seu servidor e dá CHMOD 755. (y)

#3 *º[ ¤ gLx ¤ ]º*

*º[ ¤ gLx ¤ ]º*

    Normal

  • Usuários
  • 87 posts
  • Sexo:Não informado

Posted 10/10/2004, 16:02

Muito bom!

Mas por acaso vc naum conhece um tipo que mostre os resultador COMPLETOS, e aquela legenda 'Resultados 1 - 10 de aproximadamente 999 para palavra (0,10 segundos) '

Assim, eu não to criticando, mas vc naum poderia fazer ou mostrar um sistema mais complexo, que se assemelhe ao Google?

Valew

#4 *º[ ¤ gLx ¤ ]º*

*º[ ¤ gLx ¤ ]º*

    Normal

  • Usuários
  • 87 posts
  • Sexo:Não informado

Posted 11/10/2004, 19:14

Acho que consegui!

Edição feita por: *º[ ¤ gLx ¤ ]º*, 16/10/2004, 18:49.


#5 jgcl

jgcl

    João Gabriel C. Laass, Serra/ES

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

Posted 11/10/2004, 22:34

To tentando ver isso...

Se eu conseguir posto aqui...

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

#6 *º[ ¤ gLx ¤ ]º*

*º[ ¤ gLx ¤ ]º*

    Normal

  • Usuários
  • 87 posts
  • Sexo:Não informado

Posted 11/10/2004, 23:05

Obrigado cara.

#7 Whitesnake

Whitesnake
  • Visitantes

Posted 15/10/2004, 02:48

Gente não é tão dificil fazer isso, é que eu to meio sem tempo mas, vejam bem.

No código que eu passei ele mostra os resultados da pesquisa só que somente os 10 primeiros, certo?

Mostra os 10 primeiros porque a contagem inicial definida começa em 0, veja:

my $resultados = $google_search -> doGoogleSearch( $google_key, $q, 0, 10, "false", "", "false", "lang_pt", "UTF-8", "UTF-8" );

Aí basta pegar o cód q o stvkoch passou que mostra o total de páginas:

$resultados ->{'estimatedTotalResultsCount'}

E ai pega o total de páginas e divide por 10, o que der, será o tanto de páginas que vai precisar, aí é só vc fazer um for que vai trocando o 0 inicial pelo total, e por aí vai a paginação. ;)

#8 Whitesnake

Whitesnake
  • Visitantes

Posted 16/10/2004, 18:46

Olha só como é simples, eu fiz um que mostra até 15 páginas:

#!/usr/bin/perl
print "Content-type:text/html\n\n";
use SOAP::Lite;


my $google_key='0000000000000000000000000000';
my $google_wdsl = "http://api.google.co...leSearch.wsdl";
my $qs = $ENV{QUERY_STRING};






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=iso-8859-1">
<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; }
BODY    { overflow:auto; text-align:center; }
INPUT   { font-family:Tahoma; font-size:8pt; color:000000; font-weight:bold; }
</style>
</head>

<body bgcolor="#6487DC" text="#FFFFFF" link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF">
<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="txt">
          <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <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>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
          </tr>
          <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
            <td><div align="right">powered by Google™</div></td>
          </tr>
        </table></td>
  </tr>
</table>
</form>
</body>
</html>|;

}




if ($qs){

$q = $CAMPO{q};

if (!$CAMPO{pag}){$CAMPO{pag} = 0;}

my $google_search = SOAP::Lite->service("$google_wdsl");

my $resultados = $google_search -> doGoogleSearch( $google_key,  $q, $CAMPO{pag}, 10, "false", "", "false", "lang_pt", "UTF-8", "UTF-8" );

@{$resultados->{resultElements}} or print "Sem resultado";

my $total_pags = $resultados ->{'estimatedTotalResultsCount'};

$total_paginacao = $total_pags/10;








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=iso-8859-1">
<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; }
INPUT { font-family:Tahoma; font-size:8pt; color:000000; font-weight:bold; }
</style>
</head>

<body bgcolor="#6487DC" text="#FFFFFF" link="#FFFFFF" vlink="#FFFFFF" alink="#FFFFFF">
<table><tr>|;
for ($x=0;$x<=14;$x++){
$p = $x+1;
if ($p < 10){$p="0"."$p";}
print 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="$x">
  <input type="submit" value=" $p ">
</form></td>
|;
}

print qq|
</tr></table>
<form action="?busca" method="post" name="" id="">
<table width="75%" border="0">
        <tr bgcolor="#D3E5FA">
          <td colspan="3" class="tabela"><div align="left">Fast Searcher</div></td>
        </tr>
  <tr>
    <td><table width="100%" border="0" align="center" class="txt">
          <tr>
            <td colspan="3"><div align="left">Procurar por:
                <input name="q" type="text" id="query">

                <input type="submit" value="Pesquisar">
              </div>
              <div align="right"> </div></td>
          </tr>
          <tr>
            <td colspan="3">&nbsp;</td>
          </tr>
          <tr>
            <td colspan="3">|;


foreach $resultado (@{$resultados->{resultElements}}) {

print qq|

<a href="$resultado->{URL}" target="_blank">$resultado->{title}</a>
<br><font color="CCCCCC">$resultado->{snippet}</font><br>
$resultado->{URL}<br><br>
|;

}

print qq|</td>
          </tr>
          <tr>
            <td colspan="3">&nbsp;</td>
          </tr>
          <tr>
            <td width="44%">&nbsp;</td>
            <td width="17%">&nbsp;</td>
            <td width="39%"><div align="right">powered by Google™</div></td>
          </tr>
        </table></td>
  </tr>
</table>
</form>
</body>
</html>
|;
}



Notem que o código é o mesmo que eu passei a pouco, só foi alterado as coisas em vermelho.

Daí já dá para terem uma idéia de como fazer a paginação néh? Até +!

#9 *º[ ¤ gLx ¤ ]º*

*º[ ¤ gLx ¤ ]º*

    Normal

  • Usuários
  • 87 posts
  • Sexo:Não informado

Posted 16/10/2004, 20:30

Sabe quando vc pesquisa uma palavra e o Google mostra acima dos resultados: 'Sua intenção era pesquisar: palavra'? Então, por acaso existe alguma forma de colocar isso?

#10 Need.Full

Need.Full

    nee^

  • Usuários
  • 123 posts
  • Sexo:Não informado
  • Interesses:ss

Posted 17/10/2004, 15:34

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

coloquei esse codigo deu isso
p q?

#11 *º[ ¤ gLx ¤ ]º*

*º[ ¤ gLx ¤ ]º*

    Normal

  • Usuários
  • 87 posts
  • Sexo:Não informado

Posted 17/10/2004, 16:07

Colocou no diretório cgi-bin? Coloque o nome do arquivo como busca.cgi e salve nesse diretório..

#12 Whitesnake

Whitesnake
  • Visitantes

Posted 17/10/2004, 17:27

Glx, a variável q mostra dicas e informações sobre a pesquisa é a searchComments

Need.Full creio que seu problema seja CHMOD

#13 eltonfranca

eltonfranca

    Normal

  • Usuários
  • 66 posts
  • Sexo:Masculino

Posted 17/10/2004, 23:10

Criei um arquivo busca.cgi e enviei para o meu diretorio cgi-bin e dei o CHMOD 755 e 777 e deu: "Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request."
O que faço para que funcione"
--------------------------------------------------------------------------------------------
E a minha outra duvida é a seguinte baixei o arquivo googleapi e o que faço com todos aqueles arquivos zipados qual devo usar e onde coloco no meu servidor para que eles funcionem!
Atenciosamente,
Elton França

#14 Whitesnake

Whitesnake
  • Visitantes

Posted 18/10/2004, 18:16

Obs, não é CHMOD 755 'E' 777... é 755....se por acaso ñ der certo aí seria 777.

Sobre sua segunda questão já temos tópicos citando como usar o API... basta procurar.

#15 eltonfranca

eltonfranca

    Normal

  • Usuários
  • 66 posts
  • Sexo:Masculino

Posted 18/10/2004, 21:37

Dei o CHMOD 755 e não deu certo, depois tentei o 777 e o mesmo erro continuou.
O que será que está acontecendo, será que precisa de mais arquivos ao inves de só o busca.cgi??

-----------------------------------------------
E seria possível vc me passar o link aonde tem falando do API do google??

Obrigado!!!
Atenciosamente,
Elton França




1 user(s) are reading this topic

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

IPB Skin By Virteq