79 votes

Recherche programmatique google dans Python à l'aide de la recherche personnalisée

J'ai un bout de code à l'aide de la pygoogle module python qui me permet par programme de recherche d'un terme dans google succintly:

 g = pygoogle(search_term)
 g.pages = 1
 results = g.get_urls()[0:10]

Je viens de constater que cela a été malheureusement abandonnées et remplacées par quelque chose qui s'appelle la recherche personnalisée google. J'ai regardé les autres questions connexes AINSI, mais ne trouvez pas ce que je pourrais utiliser. J'ai deux questions:

1) Fait de la recherche personnalisée google me permet de faire exactement ce que je fais dans les trois lignes ci-dessus?

2) Si oui où puis - je trouver un exemple de code pour faire exactement ce que je fais ci-dessus? Si non alors quelle est l'alternative de faire ce que j'ai fait à l'aide de pygoogle?

136voto

mbdevpl Points 1547

Il est possible de le faire. La configuration est... pas très simple, mais le résultat final est que vous pouvez rechercher sur le web entier à partir de python, avec quelques lignes de code.

Il existe 3 principales étapes au total.

1ère étape: obtenir la clé API Google

Le pygoogles'états de la page:

Malheureusement, Google ne prend plus en charge de l'API SOAP pour la recherche, ni - ils fournir de nouvelles clés de licence. En un mot, PyGoogle est assez beaucoup de morts à ce point.

Vous pouvez utiliser leur API AJAX de la place. Jetez un oeil ici pour un exemple de code: http://dcortesi.com/2008/05/28/google-ajax-search-api-example-python-code/

... mais en fait vous ne pouvez pas utiliser AJAX API, soit. Vous devez obtenir une clé API Google. https://developers.google.com/api-client-library/python/guide/aaa_apikeys Pour la simple utilisation à des fins expérimentales, je suggère "la clé du serveur".

2ème étape: configuration du Moteur de Recherche Personnalisé de sorte que vous pouvez rechercher sur le web entier

En effet, l'ancienne API n'est pas disponible. La meilleure nouvelle API qui est disponible dans la Recherche Personnalisée. Il semble soutenir seuls la recherche dans des domaines spécifiques, cependant, après cette SORTE de réponse , vous pouvez rechercher sur le web entier:

  1. De la Recherche Personnalisée Google page d'accueil ( http://www.google.com/cse/ ), cliquez sur Créer un Moteur de Recherche Personnalisé.
  2. Tapez un nom et une description pour votre moteur de recherche.
  3. En vertu de Définir votre moteur de recherche dans les Sites de la zone de Recherche, entrez au moins une URL valide (Pour l'instant, il suffit de mettre www.anyurl.com pour obtenir passé cet écran. Plus sur cela plus tard ).
  4. Sélectionnez la CSE de l'édition que vous voulez et accepter les Conditions de Service, puis cliquez sur Suivant. Sélectionnez l'option de mise en page que vous souhaitez, puis cliquez sur Prochaine.
  5. Cliquez sur les liens dans les Prochaines étapes de la section pour accéder à votre panneau de Contrôle.
  6. Dans le menu de gauche, sous Panneau de configuration, cliquez sur l'essentiel.
  7. Dans les Préférences de Recherche, sélectionnez Rechercher dans le web dans son intégralité, mais de souligner inclus sites.
  8. Cliquez Sur Enregistrer Les Modifications.
  9. Dans le menu de gauche, sous Panneau de configuration, cliquez sur Sites.
  10. Supprimer le site que vous avez entré lors de la configuration initiale.

Cette approche est également recommandée par Google: https://support.google.com/customsearch/answer/2631040

3ème étape: installation de l'API Google client pour Python

pip install google-api-python-client, plus d'info ici:

4ème étape (bonus): faire de la recherche

Donc, après cette mise en place, vous pouvez suivre les exemples de code à partir de quelques places:

et à la fin ceci:

from googleapiclient.discovery import build
import pprint

my_api_key = "Google API key"
my_cse_id = "Custom Search Engine ID"

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(
    'stackoverflow site:en.wikipedia.org', my_api_key, my_cse_id, num=10)
for result in results:
    pprint.pprint(result)

Après quelques réglages, vous pouvez écrire quelques fonctions qui se comportent exactement comme votre extrait de code, mais je vais sauter cette étape ici.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X