2010-10-10 59 views
27

Czy ktoś może mi pomóc, jak napisać skrypt Pythona, który wyszukuje google i drukuje linki najlepszych wyników.Wyszukiwarka Google przy użyciu skryptu python

+8

Jestem pewien, że ktoś może. Co napisałeś do tej pory? – jball

+0

Albo jak podstawowej pomocy szukasz? [Początkujący] (http://stackoverflow.com/questions/207701/python-tutorial-for-total-beginners)? Pierwsze kroki z [web scraping] (http: // stackoverflow.com/questions/2081586/web-scraping-with-python)? – jball

+0

@jball Nie mam jeszcze zakodowanych. Jestem nowy w Pythonie. Nauczyłem się podstawowej struktury kodowania w Pythonie. Tak więc w celu realizacji wyszukiwania Google możesz zasugerować mi, od czego zacząć. jakiego rodzaju modułów użyć? – sudh

Odpowiedz

22

Może coś takiego?

 
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) 

Czytaj docs http://docs.python.org/

+1

Daje to tylko pięć wyników? – user567879

+11

Ten api nie jest już dostępny. Musimy użyć https://developers.google.com/custom-search/ –

2

jest lepiej zalecane, aby użyć google API ale bardzo brzydką wersję .. (alternatywnie użyć google API) można filtrować zawartości jeśli chcesz

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 

wydrukuje dokładnie to, co powinna wyświetlić przeglądarka, gdy wyszukasz coś w google

+0

interesującego dla "Lynx -dump" – mt3

+0

Zwykle uzyskuję dobre wyniki z 're' (moduł wyrażeń regularnych) do" zrzutu "kodu źródłowego strony. Na wszelki wypadek korzystanie z Linuksa jest niedostępne, 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, którego właśnie skopiowałeś i wkleiłeś z pygoogle, który już nie działa. Zapewniłeś także zerowe wyjaśnienie. – reticentroot

0

Jak @Zloy Smiertniy wskazał, że odpowiedź można znaleźć here.

Jednakże, jeśli używasz Pythona 3, zmieniła się składnia raw_input, urllib i trzeba dekodować response. Tak więc, w Pythonie 3 można użyć:

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

W python3 otrzymuję ten błąd: obiekt 'module' nie ma atrybutu 'parsować' –

+0

Hmm ... dziwne. Powinien tam być zgodnie z https://docs.python.org/3/library/urllib.html. Zauważyłem, że po ponownym uruchomieniu skryptu musiałem dodać "import urllib.request" (teraz w zaktualizowanej odpowiedzi), więc może "import urllib.parse" może pomóc w twoim przypadku. Zauważ też, że po ponownym uruchomieniu skryptu miałem problemy z uzyskaniem wyniku dla 'response', więc' url' mógł się zmienić od czasu ostatniego użycia skryptu. Najlepsze szczęście –

+0

Ten interfejs API nie jest już dostępny. Alternatywą jest [google-custom-search] (https://developers.google.com/custom-search/). – ands

-2

Jestem początkującym użytkownikiem Pythona. Po prostu mój prosty pomysł na wyszukiwanie w 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

To nie robi właściwie tego, o co go prosiliśmy; wykonuje wyszukiwanie google, otwierając okno przeglądarki, ale kod Pythona nigdy nie otrzymuje wyników wyszukiwania do wyświetlenia (lub w inny sposób manipulowania). – Mogsdad

20

Spróbuj tego, jego bardzo proste w użyciu: https://pypi.python.org/pypi/google

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

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

Zainstaluj ten pakiet python i wykorzystywany jest jako proste jak to:

# 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

Spróbuj wykonać następujące czynności:

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

Nie odpowiada to na pytanie OP. Po prostu otwiera stronę w oknie przeglądarki (mimo że OP pyta o skrypt Pythona) i nie drukuje wyników (linków). – ands

1

Użyłem SERP API do osiągnięcia tego celu.

Instrukcje są dość proste:

pip install google-search-results 

i użycie jest:

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

Bardziej zaawansowane zastosowania są na Github.

Powiązane problemy