web-dev-qa-db-fra.com

Recherche dans Google avec Python

Je souhaite rechercher un texte dans Google à l'aide d'un script python et renvoyer le nom, la description et l'URL de chaque résultat. J'utilise actuellement ce code:

from google import search

ip=raw_input("What would you like to search for? ")

for url in search(ip, stop=20):
     print(url)

Cela ne renvoie que les URL. Comment puis-je renvoyer le nom et la description de chaque URL?

10
Yarden

Pas exactement ce que je cherchais, mais je me suis trouvé une solution intéressante pour le moment (je pourrais le modifier si je pouvais le rendre meilleur). J'ai combiné la recherche dans Google comme je l'ai fait (en ne renvoyant que l'URL) et le package Beautiful Soup pour l'analyse de pages 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

Cela me donne une liste du titre des pages et du lien.

Et une autre bonne solution:

from google import search
import requests

for url in search(ip, stop=10):
            r = requests.get(url)
            title = everything_between(r.text, '<title>', '</title>')
7
Yarden

Je suppose que vous utilisez cette bibliothèque de Mario Vilas à cause de l'argument stop=20 qui apparaît dans son code. Il semble que cette bibliothèque ne puisse rien retourner à part les URL, ce qui la rend horriblement sous-développée. En tant que tel, ce que vous voulez faire n'est pas possible avec la bibliothèque que vous utilisez actuellement.

Je vous suggérerais plutôt d'utiliser abenassi/Google-Search-API . Ensuite, vous pouvez simplement faire:

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)
14
Jokab

La plupart d’entre eux j’ai essayé d’utiliser, mais cela n’a pas fonctionné pour moi ou a donné des erreurs comme un module de recherche introuvable en dépit de l’importation de packages. Ou j’ai travaillé avec pilote Web Selenium et il fonctionne très bien s’il est utilisé avec Firefox ou chrome ou Navigateur Web fantôme _, mais j’ai quand même estimé qu’il était un peu lent en termes de temps d’exécution, car il interrogeait d’abord le navigateur, puis renvoyait le résultat de la recherche.

Alors j'ai pensé à utiliser Google Api et cela fonctionne incroyablement vite et renvoie les résultats avec précision.

Avant de partager le code, voici quelques astuces à suivre: -

  1. Inscrivez-vous sur Google Api pour obtenir une clé Google Api (version gratuite)} _
  2. _ {Recherchez maintenant Google Custom Search et configurez votre compte gratuit pour obtenir un identifiant de recherche personnalisé} _
  3. _ {Ajoutez maintenant ce paquet (google-api-python-client) dans votre projet python} _ (Peut être fait en écrivant! Pip install google-api-python-client)

C'est tout et tout ce que vous avez à faire maintenant est d'exécuter ce code: -

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"])
3
Piyush Rumao

Vous pouvez également utiliser un service tiers tel que API Serp qui est un moteur de recherche Google. Il résout le problème de la location de serveurs proxy et de l'analyse des résultats HTML. La sortie JSON est particulièrement riche.

Il est facile d'intégrer 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


0
Hartator