google example engine custom app python api google-search-api

example - python google



Búsqueda de Google desde una aplicación de Python (5)

Estoy intentando ejecutar una consulta de búsqueda de Google desde una aplicación de Python. ¿Hay alguna interfaz de Python que me permita hacer esto? Si no hay nadie sabe qué API de Google me permitirá hacer esto. Gracias.


Aquí está la respuesta de Alex portada a Python3

#!/usr/bin/python3 import json import urllib.request, urllib.parse def showsome(searchfor): query = urllib.parse.urlencode({''q'': searchfor}) url = ''http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s'' % query search_response = urllib.request.urlopen(url) search_results = search_response.read().decode("utf8") results = json.loads(search_results) data = results[''responseData''] print(''Total results: %s'' % data[''cursor''][''estimatedResultCount'']) hits = data[''results''] print(''Top %d hits:'' % len(hits)) for h in hits: print('' '', h[''url'']) print(''For more results, see %s'' % data[''cursor''][''moreResultsUrl'']) showsome(''ermanno olmi'')


Aquí está mi enfoque para esto: http://breakingcode.wordpress.com/2010/06/29/google-search-python/

Un par de ejemplos de código:

# Get the first 20 hits for: "Breaking Code" WordPress blog from google import search for url in search(''"Breaking Code" WordPress blog'', stop=20): print(url) # Get the first 20 hits for "Mariposa botnet" in Google Spain from google import search for url in search(''Mariposa botnet'', tld=''es'', lang=''es'', stop=20): print(url)

Tenga en cuenta que este código NO utiliza la API de Google, y todavía está funcionando hasta la fecha (enero de 2012).


Como la API de AJAX está muerta, puede usar un servicio de terceros como Serp API que es un contenedor de resultados del motor de búsqueda de Google.

Es fácil de integrar con Python:

from lib.google_search_results import GoogleSearchResults params = { "q" : "Coffee", "location" : "Austin, Texas, United States", "hl" : "en", "gl" : "us", "google_domain" : "google.com", "api_key" : "demo", } query = GoogleSearchResults(params) dictionary_results = query.get_dictionary()

GitHub: https://github.com/serpapi/google-search-results-python


Soy nuevo en Python y estaba investigando cómo hacer esto. Ninguno de los ejemplos proporcionados funciona correctamente para mí. Algunos están bloqueados por google si realiza muchas (pocas) solicitudes, algunas están desactualizadas. Al analizar el html de búsqueda de google (agregando el encabezado en la solicitud) funcionará hasta que google cambie la estructura html nuevamente. Puede usar la misma lógica para buscar en cualquier otro motor de búsqueda, buscando en el html (view-source).

import urllib2 def getgoogleurl(search,siteurl=False): if siteurl==False: return ''http://www.google.com/search?q=''+urllib2.quote(search) else: return ''http://www.google.com/search?q=site:''+urllib2.quote(siteurl)+''%20''+urllib2.quote(search) def getgooglelinks(search,siteurl=False): #google returns 403 without user agent headers = {''User-agent'':''Mozilla/11.0''} req = urllib2.Request(getgoogleurl(search,siteurl),None,headers) site = urllib2.urlopen(req) data = site.read() site.close() #no beatifulsoup because google html is generated with javascript start = data.find(''<div id="res">'') end = data.find(''<div id="foot">'') if data[start:end]=='''': #error, no links to find return False else: links =[] data = data[start:end] start = 0 end = 0 while start>-1 and end>-1: #get only results of the provided site if siteurl==False: start = data.find(''<a href="/url?q='') else: start = data.find(''<a href="/url?q=''+str(siteurl)) data = data[start+len(''<a href="/url?q=''):] end = data.find(''&amp;sa=U&amp;ei='') if start>-1 and end>-1: link = urllib2.unquote(data[0:end]) data = data[end:len(data)] if link.find(''http'')==0: links.append(link) return links

Uso:

links = getgooglelinks(''python'',''http://www..com/'') for link in links: print link

(Editar 1: Agregar un parámetro para restringir la búsqueda de Google a un sitio específico)

(Editar 2: Cuando agregué esta respuesta estaba codificando un script de Python para buscar subtítulos. Hace poco lo cargué en Github: Subseek )


Aquí hay un ejemplo simple (curiosamente faltan algunas comillas ;-). La mayoría de lo que verás en la web son las interfaces de Python con la vieja API de SOAP discontinuada; el ejemplo que estoy señalando utiliza la API AJAX más reciente y compatible, ¡eso es definitivamente lo que quieres! -)

Editar : aquí hay un ejemplo más completo de Python 2.6 con todas las comillas necesarias & c; -) ...:

#!/usr/bin/python import json import urllib def showsome(searchfor): query = urllib.urlencode({''q'': searchfor}) url = ''http://ajax.googleapis.com/ajax/services/search/web?v=1.0&%s'' % query search_response = urllib.urlopen(url) search_results = search_response.read() results = json.loads(search_results) data = results[''responseData''] print ''Total results: %s'' % data[''cursor''][''estimatedResultCount''] hits = data[''results''] print ''Top %d hits:'' % len(hits) for h in hits: print '' '', h[''url''] print ''For more results, see %s'' % data[''cursor''][''moreResultsUrl''] showsome(''ermanno olmi'')