• Publicidad

Hacer búsquedas en Google

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Hacer búsquedas en Google

Notapor later » 2007-10-07 06:28 @311

¡Hola!. He estado investigando acerca de cómo hacer búsquedas en Google.
Y me topé con este manual:

http://google.dirson.com/apis/ejemplo01.php

No me gusta la forma con la que lo hace en el manual.

Yo lo que quiero es poder hacer una búsqueda en Google a partir de una palabra que defina, y guardar las urls que me dio como resultado la búsqueda en un array. Quiero hacer más cosas, pero quiero empezar cómo hacer eso.
later
Perlero nuevo
Perlero nuevo
 
Mensajes: 46
Registrado: 2007-10-06 12:42 @570

Publicidad

Notapor joss » 2007-10-07 06:31 @313

Yo te dejo un Bot de Google escrito en Phyton. Aunque si no sabes Phyton puede que te cueste traducirlo a Perl.

Sintáxis: [ Descargar ] [ Ocultar ]
Using python Syntax Highlighting
#!/usr/bin/env python

"""
        #########################
        ## goopyx 1.0 b        ##
        ##            by nekro ##
        #########################

        Contacto:
            http://www.hackerss.com

        Uso:
                ./goopyx [opciones]

                opciones:

                -l  --logfile=        Archivo de logs.
                -p  --paginas=        Paginas a mostrar (max 10) y debe ser un numero.

"""



import re,urllib2,sys,getopt
from sgmllib import SGMLParser

class atag(SGMLParser):
    def reset(self):
        SGMLParser.reset(self)
        self.urls = []

    def start_a(self, attrs):
        href = [x for y, x in attrs if y=='href']
        if href:
            self.urls.extend(href)


def google(query,paginas):

    #definimos variables
    google="http://www.google.com.mx/search?q=%s&num=100&start=%d&sa=N"
#url de google
    cont = 0        #contador
    query = "%20".join(query) #cadena de busqueda
    ident = re.compile("related:")
    listalinks = [""]


    while cont < paginas:

        #armamos la url
        urlgoogle = google % (query,cont * 100)

        #descargamos la pagina
        req = urllib2.Request(urlgoogle)
        opener = urllib2.build_opener()
        opener.addheaders = [('User-agent', 'Mozilla/5.0')]
        f = opener.open(req)
        html = f.read()

        #extraemos todos los links
        links = atag()
        links.feed(html)
        links.close()

        #checamos cada link hasta encontrar el correcto
        for x in links.urls:
            #print x
            if ident.search(x):
                url = x.replace("/search?hl=es&q=related:","")
                url = urllib2.unquote(url)
                listalinks.append(url)





        cont += 1
    #devolvemos una lista con los links

    totallinks = len(listalinks)

    return listalinks,totallinks

def guarda(listalinks,logfile):

    archivo = open(logfile,"a")
    #links = "\n".join(listalinks)
    for links in listalinks:
        archivo.write(links)
        archivo.write("\n")
    archivo.close()

def main():

    #Variables

    paginas = 10
    logfile = "google.txt"


    #Iniciamos el programa
    logo = """
              #########################
              ## goopyx 1.0 b        ##
              ##            by nekro ##
              #########################
           """


    ayuda = """
              USO:
                    %s [opciones]

                opciones:

                -l  --logfile=        Archivo de logs.
                -p  --paginas=        Paginas a mostrar (max 10) y debe ser un numero.


            """
% sys.argv[0]
    #obtenemos los parametros

    argumentos = sys.argv[1:]
    try:
        opt,args = getopt.getopt(argumentos,"p:l:",["paginas=","logfile="])
    except getopt.GetoptError:
        print ayuda
        sys.exit()

    for o,a in opt:
        if o in ("-p","--paginas"):
            try:
                paginas = int(a)
            except ValueError:
                print ayuda
                sys.exit()

        elif o in ("-l","--logfile"):
            logfile = a


    #iniciamos
    print logo
    query = raw_input(">>> Consulta: ")
    print ">>> Buscando: %s" % query
    print ">>> Paginas : %d" % paginas
    print ">>> Logfile : %s" % logfile
    print ">>> ....."


    query = query.split(" ")


    listalinks,totallinks = google(query,paginas)
    guarda(listalinks,logfile)

    print ">>> Se econtraron %d links" % totallinks


# Ejecutamos todo
if __name__ == '__main__':
    try:
        main()
    except  KeyboardInterrupt:
        print "Cancelado por el usuario."
Coloreado en 0.007 segundos, usando GeSHi 1.0.8.4
joss
Perlero nuevo
Perlero nuevo
 
Mensajes: 36
Registrado: 2007-09-10 13:04 @586

Notapor later » 2007-10-07 06:32 @314

Gracias por el code, pero yo busco algo más sencillito. Tal vez este code me sirva en un futuro. Gracias igualmente.
later
Perlero nuevo
Perlero nuevo
 
Mensajes: 46
Registrado: 2007-10-06 12:42 @570

Notapor explorer » 2007-10-07 06:58 @332

En CPAN hay un montón de módulos para Google. En búsquedas, si no quieres usar la API de Google, deberás buscar un módulo del tipo Scraper.

En cambio, solicitando un código de uso a Google, podrás hacer lo que quieres con solo esto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  use WWW::Search;
  my $search = WWW::Search->new('Google', key => $key);
  $search->native_query("leon brocard");
  while (my $result = $search->next_result()) {
    print $result->title, "\n";
    print $result->url, "\n";
    print $result->description, "\n";
    print "\n";
  }
Coloreado en 0.002 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: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

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