Dom Oct 07, 2007 5:28 am
|
 |
later
Perlero Nuevo

|
Registrado: 06 Oct 2007
Mensajes: 37
|
|
| Hacer búsquedas en Google |
|
|
¡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. |
|
|
|

Dom Oct 07, 2007 5:31 am
|
 |
joss
Perlero Nuevo

|
Registrado: 10 Sep 2007
Mensajes: 36
|
|
|
|
|
Yo te dejo un Bot de Google escrito en Phyton. Aunque si no sabes Phyton puede que te cueste traducirlo a Perl.
| Python: | #!/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." |
|
|

Dom Oct 07, 2007 5:32 am
|
 |
later
Perlero Nuevo

|
Registrado: 06 Oct 2007
Mensajes: 37
|
|
|
|
|
| Gracias por el code, pero yo busco algo más sencillito. Tal vez este code me sirva en un futuro. Gracias igualmente. |
|
Dom Oct 07, 2007 5:58 am
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4104
Ubicación: Valladolid, España
|
|
|
|
|
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:
| Perl: | 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";
} |
|
|
Powered by phpBB © 2001, 2005 phpBB Group
|