2010-10-10 2 views
27

Может ли кто-нибудь помочь мне в написании скрипта python, который ищет google и выводит ссылки на лучшие результаты.Поиск в Google с использованием сценария python

+8

Я уверен, что кто-то может. Что вы написали до сих пор? – jball

+0

Или как базовую помощь вы ищете? [Начинающий] (http://stackoverflow.com/questions/207701/python-tutorial-for-total-beginners)? Начало работы с [web scraping] (http: // stackoverflow.ком/вопросы/2081586/веб-соскоб-с-питон)? – jball

+0

@ jball i havent еще закодирован. Я новичок в python. Я изучил основную структуру кодирования в python. Поэтому, чтобы внедрить google-поиск, вы можете предложить мне, с чего начать. какие модули использовать? – sudh

ответ

22

Возможно, что-то вроде этого?

 
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) 

Прочитайте документацию http://docs.python.org/

+1

Это дает только пять результатов? – user567879

+11

Этот api больше не доступен. Нам нужно использовать https://developers.google.com/custom-search/ –

2

это лучше предложено использовать Google APIs , но очень некрасиво версия .. (альтернатива использовать Google API) вы можете фильтровать содержимое, если вы хотите

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 

он будет печатать точно, что браузер должен отображать при поиске чего-либо на google

+0

для «lynx -dump» – mt3

+0

Обычно я получаю хорошие результаты с помощью 're' (модуль регулярных выражений) для« дампа »исходного кода страницы. На всякий случай использование Linux недоступно; 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

Чувак, который вы только что скопировали и вставляли, что из pygoogle, который больше не работает fyi. Вы также указали нулевое объяснение. – reticentroot

0

Как @Zloy Smiertniy отметил, что ответ может быть найден here.

Однако, если вы используете Python 3, синтаксис raw_input, urllib изменился, и нужно декодировать response. Таким образом, для Python 3 можно использовать:

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

В python3 я получаю эту ошибку: объект «module» не имеет атрибута «parse» –

+0

Хм ... странно. Он должен быть указан в соответствии с https://docs.python.org/3/library/urllib.html. Я заметил, что после перезапуска скрипта мне пришлось добавить 'import urllib.request' (теперь в обновленном ответе), поэтому, возможно,« import urllib.parse »может помочь в вашем случае. Также обратите внимание, что после перезапуска скрипта у меня возникли проблемы с получением результата для 'response', поэтому' url', возможно, изменился с тех пор, как я использовал скрипт в прошлый раз. Удачи –

+0

Этот API больше не доступен, альтернативой является [google-custom-search] (https://developers.google.com/custom-search/). – ands

-2

Я новичок в Python. Просто моя простая идея для поиска в 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

Это фактически не делает то, что было задано; он выполняет поиск Google, открывая окно браузера, но код Python никогда не получает результаты поиска для отображения (или иным образом манипулирует). – Mogsdad

20

Попробуйте это, его очень проста в использовании: https://pypi.python.org/pypi/google

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

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

Установите этот пакет питона и использование как простой как это:

# 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

Попробуйте следующее:

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

Это не отвечает на вопрос OP. Он просто открывает страницу в окне браузера (хотя OP запросил сценарий python), и он не распечатывает результаты (ссылки). – ands

1

Я использовал SERP API для достижения этой цели.

инструкции довольно просты:

pip install google-search-results 

и использование является:

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

Более продвинутые виды использования на Github.

Смежные вопросы