2010-10-10 32 views
27

¿Alguien me puede ayudar a escribir una secuencia de comandos python que busca en google e imprime los enlaces de los resultados principales?Búsqueda de Google usando la secuencia de comandos python

+8

Estoy seguro de que alguien puede. ¿Qué has escrito hasta ahora? – jball

+0

¿O qué tan básico de ayuda estás buscando? [Principiantes] (http://stackoverflow.com/questions/207701/python-tutorial-for-total-beginners)? Comenzar con [web scraping] (http: // stackoverflow.com/questions/2081586/web-scraping-with-python)? – jball

+0

@jball aún no he codificado. Soy nuevo en Python. Aprendí la estructura básica de la codificación en python. Por lo tanto, para implementar la búsqueda en Google, puede sugerirme dónde comenzar. ¿Qué tipo de módulos usar? – sudh

Respuesta

22

Tal vez, algo como esto?

 
import urllib 
import json as m_json 
query = raw_input ('Query: ') 
query = urllib.urlencode ({ 'q' : query }) 
response = urllib.urlopen ('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&' + query).read() 
json = m_json.loads (response) 
results = json [ 'responseData' ] [ 'results' ] 
for result in results: 
    title = result['title'] 
    url = result['url'] # was URL in the original and that threw a name error exception 
    print (title + '; ' + url) 

Leer la documentación http://docs.python.org/

+1

¿Esto da solo cinco resultados? – user567879

+11

Esta API ya no está disponible. Tenemos que usar https://developers.google.com/custom-search/ –

2

es mejor sugerido el uso de las API de Google sino una versión muy feo .. (alternativa a utilizar la API de Google) puede filtrar el contenido si desea

import os, urllib, sys 
filename = 'http://www.google.com/search?' + urllib.urlencode({'q': ' '.join(sys.argv[1:]) }) 
cmd = os.popen("lynx -dump %s" % filename) 
output = cmd.read() 
cmd.close() 
print output 

imprimirá exactamente lo que un navegador debería mostrar cuando busque algo en google

+0

interesante para "lynx -dump" – mt3

+0

Normalmente obtengo buenos resultados con 're' (módulo de expresión regular) para" volcar "el código fuente de páginas. En caso de que no esté disponible el uso de Linux; o) – heltonbiker

-4
from pygoogle import pygoogle 
g = pygoogle('quake 3 arena') 
g.pages = 5 
print '*Found %s results*'%(g.get_result_count()) 
g.get_urls() 
+7

Dude que acaba de copiar y pegar eso de pygoogle, que ya no funciona fyi. Usted proporcionó cero explicaciones también. – reticentroot

0

Como @Zloy Smiertniy señaló, la respuesta se puede encontrar here.

Sin embargo, si está utilizando Python 3 la sintaxis de raw_input, urllib ha cambiado, y hay que decodificar response. Por lo tanto, para Python 3 uno puede usar:

import urllib 
import urllib.request 
import json 
url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&" 
query = input("Query:") 
query = urllib.parse.urlencode({'q' : query }) 
response = urllib.request.urlopen (url + query).read() 
data = json.loads (response.decode()) 
results = data [ 'responseData' ] [ 'results' ] 
for result in results: 
    title = result['title'] 
    url = result['url'] 
    print (title + '; ' + url) 
+0

En python3 recibo este error: el objeto 'módulo' no tiene atributo 'analizar' –

+0

Hmm ... extraño. Debería estar allí de acuerdo con https://docs.python.org/3/library/urllib.html. Me di cuenta de que, después de volver a ejecutar el script, tenía que agregar 'import urllib.request' (ahora en la respuesta actualizada), así que tal vez' import urllib.parse' podría ayudar en su caso. También tenga en cuenta que después de volver a ejecutar el script, tuve problemas para obtener un resultado para 'response', por lo que el' url' puede haber cambiado desde que utilicé el script la última vez. Lo mejor de la suerte –

+0

Esta API ya no está disponible, la alternativa es [google-custom-search] (https://developers.google.com/custom-search/). – ands

-2

Soy un novato de Python. Solo mi idea simple para una búsqueda en Google.

import webbrowser 
lib=raw_input("Enter what you want to search for:") 
ur="https://www.google.co.in/gfe_rd=cr&ei=Q7nZVqSBIMSL8QeBpbOoDQ#q=" 
webbrowser.open_new(ur+lib) 
+1

Esto no hace realmente lo que se pidió; realiza una búsqueda en Google abriendo una ventana del navegador, pero el código de Python nunca recibe los resultados de búsqueda para mostrar (o manipular). – Mogsdad

20

Prueba esto, es muy fácil de usar: https://pypi.python.org/pypi/google

Docs: https://breakingcode.wordpress.com/2010/06/29/google-search-python/

Github: https://github.com/MarioVilas/google

instalar este paquete python y su uso es tan tan simple como esto:

# Get the first 5 hits for "google 1.9.1 python" in Google Pakistan 
from google import search 

for url in search('google 1.9.1 python', tld='com.pk', lang='es', stop=5): 
    print(url) 
+0

http://www.geeksforgeeks.org/performing-google-search-using-python-code/ – JerryGoyal

0

intente lo siguiente:

import webbrowser 
lib = input() 
url = "https://www.google.co.in/search?q=" +(str(lib))+ "&oq="+(str(lib))+"&gs_l=serp.12..0i71l8.0.0.0.6391.0.0.0.0.0.0.0.0..0.0....0...1c..64.serp..0.0.0.UiQhpfaBsuU" 
webbrowser.open_new(url) 
+0

Esto no responde a la pregunta del OP. Simplemente abre la página en una ventana del navegador (aunque OP solicitó el script de python) y no imprime los resultados (enlaces). – ands

1

He usado API SERP para lograr esto.

Las instrucciones son bastante simples:

pip install google-search-results 

y el uso es:

from lib.google_search_results import GoogleSearchResults 
query = GoogleSearchResults({"q": "coffee"}) 
json_results = query.get_json() 

Más usos avanzados están en Github.

Cuestiones relacionadas