2016-05-07 1 views
26

У меня есть фрагмент кода с помощью модуля pygoogle питона, который позволяет мне программно искать какой-то срок в гугле succintly:Программный поиск Google в Python с использованием пользовательского поиска

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

Я только что узнал, что это было к сожалению, прекращено и заменено тем, что называется обычным поиском Google. Я посмотрел на другие связанные вопросы, касающиеся SO, но не нашел ничего, что мог бы использовать. У меня есть два вопроса:

1) Позволяет ли Google выполнить то, что я делаю в трех строках выше?

2) Если да - где я могу найти пример кода, чтобы делать то, что я делаю выше? Если нет, то какова альтернатива делать то, что я сделал с помощью pygoogle?

+0

Похоже, что пользовательский поиск возвращает результаты кэширования, которые не синхронизированы с последними найденными Google? – Alex

ответ

52

Это можно сделать. Настройка ... не очень проста, но конечным результатом является то, что вы можете искать всю сеть с python с несколькими строками кода.

Всего 3 основных этапа.

первый шаг: получить Google API ключ

страница состояния pygoogle «s:

К сожалению, Google больше не поддерживает SOAP API для поиска, ни они предоставляют новые лицензионные ключи. Вкратце, PyGoogle довольно очень мертв на этом этапе.

Вместо этого вы можете использовать их API AJAX. Посмотрите здесь образец кода: http://dcortesi.com/2008/05/28/google-ajax-search-api-example-python-code/

... но вы на самом деле не может использовать AJAX API либо. Вам нужно получить ключ API Google. https://developers.google.com/api-client-library/python/guide/aaa_apikeys Для простого экспериментального использования я предлагаю «серверный ключ».

второго этап: установка Custom Search Engine, так что вы можете осуществлять поиск по всему Интернету

Действительно, старый API не доступен. Лучшим новым API, который доступен, является пользовательский поиск. Это, кажется, поддерживает только поиск в конкретных областях, однако после выполнения this SO answer вы можете осуществлять поиск по всему Интернету:

  1. На главной странице Google Custom Search (http://www.google.com/cse/), нажмите кнопку Создать систему пользовательского поиска.
  2. Введите название и описание вашей поисковой системы.
  3. В разделе Определение вашей поисковой системы в поле «Сайты для поиска» введите хотя бы один действительный URL-адрес (на данный момент просто поместите www.anyurl.com, чтобы получить .
  4. Выберите вариант CSE, который вы хотите, и примите Условия использования, затем нажмите «Далее». Выберите нужный вариант макета, а затем нажмите Далее.
  5. Нажмите любую ссылку в разделе «Следующие шаги», чтобы перейти к панели управления.
  6. В левом меню в разделе «Панель управления» выберите «Основы».
  7. В разделе «Настройки поиска» выберите «Поиск по всей сети», но выделите включенные сайты.
  8. Нажмите «Сохранить изменения».
  9. В левом меню в разделе «Панель управления» выберите «Сайты».
  10. Удалите сайт, который вы ввели в процессе начальной настройки.

Этот подход также Google рекомендовал: https://support.google.com/customsearch/answer/2631040

третий шаг: установить клиент API Google для Python

pip install google-api-python-client, подробнее здесь:

четвёртого шаг (бонус): сделать поиск

Итак, после установки этого, вы можете следовать образцам кода из нескольких мест:

и в конечном итоге с этим:

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) 

После некоторых настройки вы могли бы написать некоторые функции, которые ведут себя так же, как ваш сниппет, но я пропущу этот шаг здесь.

+0

Спасибо, это отличный ответ. – user3079275

+3

'my_cse_id' можно найти по адресу' https://cse.google.com/cse/setup/basic?cx= 'и заменить'% 3A' на ':' – Hugo

+0

. Выше кода дает тот же результат когда-то. Есть идеи? –

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