2010-10-10 7 views
27

Quelqu'un pourrait-il m'aider sur la façon d'écrire un script python qui recherche google et imprime les liens des meilleurs résultats.Recherche Google en utilisant le script python

+8

Je suis sûr que quelqu'un peut. Qu'avez-vous écrit jusqu'ici? – jball

+0

Ou comment basique de l'aide cherchez-vous? [Débutants] (http://stackoverflow.com/questions/207701/python-tutorial-for-total-beginners)? Premiers pas avec [web scraping] (http: // stackoverflow.com/questions/2081586/web-scraping-avec-python)? – jball

+0

@ jball Je n'ai pas encore codé. Je suis nouveau à python. J'ai appris la structure de base du codage en python. Donc, pour mettre en œuvre la recherche google pouvez-vous me suggérer par où commencer. quel genre de modules utiliser? – sudh

Répondre

22

Peut-être que quelque chose comme ça?

 
import urllib 
import json as m_json 
query = raw_input ('Query: ') 
query = urllib.urlencode ({ 'q' : query }) 
response = urllib.urlopen ('http://ajax.googleapis.com/ajax/services/search/web?v=1.0&' + query).read() 
json = m_json.loads (response) 
results = json [ 'responseData' ] [ 'results' ] 
for result in results: 
    title = result['title'] 
    url = result['url'] # was URL in the original and that threw a name error exception 
    print (title + '; ' + url) 

Lire la documentation http://docs.python.org/

+1

Cela donne cinq résultats seulement? – user567879

+11

Cette API n'est plus disponible. Nous devons utiliser https://developers.google.com/custom-search/ –

2

il est mieux suggéré d'utiliser Google APIs mais une version très laid .. (alternative à utiliser google api) vous pouvez filtrer le contenu si vous voulez

import os, urllib, sys 
filename = 'http://www.google.com/search?' + urllib.urlencode({'q': ' '.join(sys.argv[1:]) }) 
cmd = os.popen("lynx -dump %s" % filename) 
output = cmd.read() 
cmd.close() 
print output 

il affichera exactement ce qu'un navigateur devrait afficher lorsque vous recherchez quelque chose sur google

+0

intéressant pour le "lynx -dump" – mt3

+0

Je reçois généralement de bons résultats avec 're' (module d'expression régulière) pour" vider "le code source de pages Juste au cas où l'utilisation de Linux n'est pas disponible, o) – heltonbiker

-4
from pygoogle import pygoogle 
g = pygoogle('quake 3 arena') 
g.pages = 5 
print '*Found %s results*'%(g.get_result_count()) 
g.get_urls() 
+7

Dude vous avez juste copié et collé cela de la pygoogle, qui ne fonctionne plus fyi. Vous avez fourni zéro expliquer aussi bien. – reticentroot

0

Comme @Zloy Smiertniy a souligné, la réponse se trouve here.

Cependant, si vous utilisez Python 3, la syntaxe de raw_input, urllib a changé, et il faut décoder le response. Ainsi, pour Python 3 on peut utiliser:

import urllib 
import urllib.request 
import json 
url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&" 
query = input("Query:") 
query = urllib.parse.urlencode({'q' : query }) 
response = urllib.request.urlopen (url + query).read() 
data = json.loads (response.decode()) 
results = data [ 'responseData' ] [ 'results' ] 
for result in results: 
    title = result['title'] 
    url = result['url'] 
    print (title + '; ' + url) 
+0

En python3 je reçois cette erreur: l'objet 'module' n'a pas d'attribut 'parse' –

+0

Hmm ... étrange. Il devrait être là selon https://docs.python.org/3/library/urllib.html. J'ai remarqué qu'après avoir réexécuté le script, j'ai dû ajouter 'import urllib.request' (maintenant dans la réponse mise à jour), donc peut-être' importer urllib.parse' pourrait vous aider dans votre cas. Notez également qu'après avoir réexécuté le script, j'ai eu des problèmes pour obtenir une sortie pour 'response', donc le' url' peut avoir changé depuis que j'ai utilisé le script la dernière fois. Bonne chance –

+0

Cette API n'est plus disponible, l'alternative est [google-custom-search] (https://developers.google.com/custom-search/). – ands

-2

Je suis un débutant à Python. Juste mon idée simple pour une recherche google.

import webbrowser 
lib=raw_input("Enter what you want to search for:") 
ur="https://www.google.co.in/gfe_rd=cr&ei=Q7nZVqSBIMSL8QeBpbOoDQ#q=" 
webbrowser.open_new(ur+lib) 
+1

Cela ne fait pas réellement ce qui a été demandé; il effectue une recherche google en ouvrant une fenêtre de navigateur, mais le code Python ne reçoit jamais les résultats de recherche à afficher (ou manipuler autrement). – Mogsdad

20

Essayez ceci, il est très simple à utiliser: https://pypi.python.org/pypi/google

Docs: https://breakingcode.wordpress.com/2010/06/29/google-search-python/

Github: https://github.com/MarioVilas/google

Installez ce paquet python et l'utilisation est aussi simple comme ceci:

# Get the first 5 hits for "google 1.9.1 python" in Google Pakistan 
from google import search 

for url in search('google 1.9.1 python', tld='com.pk', lang='es', stop=5): 
    print(url) 
+0

http://www.geeksforgeeks.org/performing-google-search-using-python-code/ – JerryGoyal

0

les opérations suivantes:

import webbrowser 
lib = input() 
url = "https://www.google.co.in/search?q=" +(str(lib))+ "&oq="+(str(lib))+"&gs_l=serp.12..0i71l8.0.0.0.6391.0.0.0.0.0.0.0.0..0.0....0...1c..64.serp..0.0.0.UiQhpfaBsuU" 
webbrowser.open_new(url) 
+0

Ceci ne répond pas à la question de l'OP. Il ouvre simplement la page dans une fenêtre de navigateur (même si OP a demandé un script python) et il n'imprime pas les résultats (liens). – ands

1

Je l'ai utilisé API SERP pour y parvenir.

Les instructions sont assez simples:

pip install google-search-results 

et l'utilisation est:

from lib.google_search_results import GoogleSearchResults 
query = GoogleSearchResults({"q": "coffee"}) 
json_results = query.get_json() 

Plus utilisations avancées sont sur Github.

Questions connexes