Buscando en Google con Python

Quiero buscar un texto en Google usando un script de python y devolver el nombre, la descripción y la URL para cada resultado. Actualmente estoy usando este código:

from google import search ip=raw_input("What would you like to search for? ") for url in search(ip, stop=20): print(url) 

Esto devuelve solo las URL. ¿Cómo puedo devolver el nombre y la descripción de cada URL?

Supongo que está utilizando esta biblioteca de Mario Vilas debido al argumento stop=20 que aparece en su código. Parece que esta biblioteca no puede devolver nada más que las URL, por lo que está horriblemente subdesarrollada. Como tal, lo que quiere hacer no es posible con la biblioteca que está utilizando actualmente.

Le sugiero que utilice abenassi / Google-Search-API . Entonces simplemente puedes hacer:

 from google import google num_page = 3 search_results = google.search("This is my query", num_page) for result in search_results: print(result.description) 

No exactamente lo que estaba buscando, pero encontré una buena solución por el momento (podría editar esto si puedo mejorarlo). Combiné la búsqueda en Google como lo hice (devolviendo solo la URL) y el paquete Beautiful Soup para analizar las páginas HTML:

 from google import search import urllib from bs4 import BeautifulSoup def google_scrape(url): thepage = urllib.urlopen(url) soup = BeautifulSoup(thepage, "html.parser") return soup.title.text i = 1 query = 'search this' for url in search(query, stop=10): a = google_scrape(url) print str(i) + ". " + a print url print " " i += 1 

Esto me da una lista del título de las páginas y el enlace.

Y otras grandes soluciones:

 from google import search import requests for url in search(ip, stop=10): r = requests.get(url) title = everything_between(r.text, '', '') 

Intenté usar la mayoría de ellos, pero no funcionó o me dieron errores como el módulo de búsqueda que no se encontró a pesar de importar paquetes. O hice ejercicio con el controlador web de selenium y funciona muy bien si se usa con Firefox o Chrome o el navegador web Phantom , pero aun así sentí que era un poco lento en términos de tiempo de ejecución, ya que primero consultó el navegador y luego me dio un resultado de búsqueda.

Así que pensé en usar Google Api y funciona increíblemente rápido y devuelve resultados con precisión .

Antes de compartir el código aquí hay algunos consejos rápidos a seguir:

  1. Regístrese en Google Api para obtener una clave de Google Api (versión gratuita)
  2. Ahora busque la Búsqueda personalizada de Google y configure su cuenta gratuita para obtener un ID de búsqueda personalizado
  3. Ahora agregue este paquete (google-api-python-client) en su proyecto de python (¡puede hacerlo escribiendo! Pip install google-api-python-client)

Eso es todo y todo lo que tienes que hacer ahora es ejecutar este código:

 from googleapiclient.discovery import build my_api_key = "your API KEY TYPE HERE" my_cse_id = "YOUR CUSTOM SEARCH ENGINE ID TYPE HERE" def google_search(search_term, api_key, cse_id, **kwargs): service = build("customsearch", "v1", developerKey=api_key) res = service.cse().list(q=search_term, cx=cse_id, **kwargs).execute() return res['items'] results= google_search("YOUR SEARCH QUERY HERE",my_api_key,my_cse_id,num=10) for result in results: print(result["link"]) 

También puede usar un servicio de terceros como Serp API que es un motor de búsqueda de Google. Resuelve los problemas de tener que alquilar proxies y analizar los resultados HTML. La salida de JSON es particularmente rica.

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