Estoy tratando de 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.Búsqueda de Google desde una aplicación de Python
Respuesta
Hay un ejemplo simple here (curiosamente faltan algunas comillas ;-). La mayoría de lo que verás en la web son las interfaces de Python con la antigua API de SOAP discontinuada; el ejemplo que estoy señalando utiliza la API AJAX más nueva y compatible, ¡esa es definitivamente la que deseas! -)
Editar: aquí hay un más completo ejemplo de Python 2.6 con todas las citas necesarias y 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')
aquí está la respuesta de Alex portado 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')
¿Cuál sería la ventaja de usar Python 3 sobre la respuesta de Alex? –
@Phill, no estoy seguro de lo que quiere decir con "ventaja". Si su proyecto usa Python2, usa la respuesta de Alex. Si el proyecto usa Python3, puede usar esta respuesta.Desafortunadamente no es realmente práctico escribir esta función de tal manera que use el mismo código con las dos versiones de Python –
. Supongo que mi pregunta es ¿por qué usar Python3 sobre Python2? ¿Cuales son los beneficios? Nuevo en Python, proveniente del fondo de PHP. ¿Están las cosas más formalizadas? –
aquí es mi acercamiento a este : 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 el API de Google, y sigue trabajando hasta la fecha (enero de 2012).
HI Mario, he tratado de usar tu script y es fabuloso. Me enfrenta solo a un problema: incluso cuando uso .COM como TLD obtengo los resultados que aparecen en .CO.IN. ¿Puedes ayudarme? –
Tenga en cuenta que esto puede romperse en cualquier momento, ya que no está utilizando una API oficial, sino que está raspando la página de resultados de Google, p. si Google cambia la forma en que se devuelven los resultados. – stracktracer
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. Analizando 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('&sa=U&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.stackoverflow.com/')
for link in links:
print link
(Edición 1: Adición de un parámetro para limitar la búsqueda Google a un sitio específico)
(Edit 2: Cuando añadí esta respuesta fue la codificación de una Script de Python para buscar subtítulos. Hace poco lo cargué en Github: Subseek)
Me interesa saber por qué ninguno de los ejemplos funcionó para usted, especialmente la parte sobre BeautifulSoup que no funciona porque el código HTML está generado por JavaScript ... Lo intenté ahora mismo y funciona: http: //breakingcode.wordpress .com/2010/06/29/google-search-python/ – MarioVilas
En mi caso, no pude usar BeautifulSoup. Lo probé y parece que Google estaba generando la respuesta html con bloques de JavaScript, por lo que no encontré la forma de obtener los enlaces con la clase BS. Solo encontré los enlaces en la respuesta usando la función "buscar". –
Tal vez la URL de Google apunta a la API más nueva que usa JavaScript en lugar de la API heredada que usó HTML desnudo. Creo que agregar "& btnG = Google + Search" en sus consultas hace que use la API HTML, o al menos esa es la única diferencia que veo. – MarioVilas
- 1. Búsqueda de Google con Python
- 2. Cómo crear una aplicación de búsqueda de cotizaciones en python
- 3. ¿Iniciar una aplicación externa desde una extensión de Google Chrome?
- 4. Búsqueda de imágenes de Google desde el código de java
- 5. búsqueda de Python con imagenes de google images
- 6. Python: la URL correcta para descargar imágenes desde la Búsqueda de imágenes de Google
- 7. Búsqueda de Google usando la secuencia de comandos python
- 8. Realización de una conexión OAuth desde una aplicación de Windows a una aplicación Google App Engine
- 9. Android - Inicio de Google Navegación desde una aplicación
- 10. ¿Google tiene una API de búsqueda básica?
- 11. ¿Cómo agregar mi aplicación a la búsqueda local de google?
- 12. Normal Búsqueda personalizada de Google
- 13. Google App Engine (python): API de búsqueda: String Search
- 14. Obtenga resultados de búsqueda de Google programáticamente
- 15. API de búsqueda de Google
- 16. ¿Existe alguna aplicación de búsqueda personalizada GRATIS como la búsqueda personalizada de Google?
- 17. ¿Cómo analizo XML desde una aplicación de motor de aplicación de Google?
- 18. Búsqueda de código fuente con Google Desktop
- 19. Abrir la aplicación de Excel desde Python
- 20. Ejecuta una aplicación C# desde el script de Python
- 21. ¿Qué es un buen analizador de Python para una consulta de búsqueda tipo google?
- 22. Búsqueda avanzada de cadenas de python
- 23. Aplicación de Python instalada e ID de cliente de Google
- 24. motor de búsqueda de Google y paginación
- 25. Búsqueda de imágenes de Google: ¿cómo puedo construir una URL de búsqueda de imágenes inversa?
- 26. Google API de búsqueda - Número de Resultados
- 27. ¿es posible compartir datos de sesión desde una aplicación asp.net mvc y una aplicación python?
- 28. ¿Cómo desencadenar eventos de Google Analytics desde Python?
- 29. Búsqueda de texto completo como Google
- 30. Búsqueda de una lista de objetos en Python
Intenté esto en mi máquina Linux local y luego Google pensó que soy un bot y cualquier búsqueda de mi navegador es captcha ¡Ed! No debería haber intentado esto en el trabajo, solo un aviso para alguien que usa esto. ¡Agregue agente de usuario y referencia para que se vea más como una solicitud genuina! – ThinkCode
Lamentablemente, la [API de búsqueda web de Google] (http://code.google.com/apis/websearch/) en la que se basa esta tecnología estaba en desuso en noviembre de 2010. Se supone que la API de búsqueda personalizada debe reemplazarla, pero es necesario que configure una lista de URL para buscar, no toda la web. – Day
a partir de hoy (2014.06.10), esto está funcionando ... en mi IPython/Python2.7.6 – kmonsoor