Подтвердить что ты не робот

Программный поиск google в Python с помощью пользовательского поиска

У меня есть фрагмент кода с использованием модуля pygoogle python, который позволяет мне программно искать какой-то термин в googleintuitly:

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

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

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

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

4b9b3361

Ответ 1

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

Всего три основных шага.

1-й шаг: получить ключ API Google

На странице pygoogle указано:

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

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

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

2-й шаг: настройте систему пользовательского поиска, чтобы вы могли искать всю сеть

Действительно, старый API недоступен. Лучшим новым API, который доступен, является пользовательский поиск. Кажется, он поддерживает только поиск в определенных доменах, однако после выполнения этого SO-ответа вы можете искать всю сеть:

  • На домашней странице Google Custom Search (http://www.google.com/cse/) нажмите Создать систему пользовательского поиска.
  • Введите имя и описание для вашей поисковой системы.
  • В разделе "Определить свою поисковую систему" ​​в поле "Сайты для поиска" введите хотя бы один действительный URL-адрес (на данный момент просто поместите www.anyurl.com мимо этого экрана. Подробнее об этом позже).
  • Выберите версию CSE, которую вы хотите, и примите Условия использования, затем нажмите "Далее". Выберите нужный вариант макета, а затем нажмите кнопку Далее.
  • Чтобы перейти к панели управления, нажмите любую ссылку в разделе "Следующие шаги".
  • В левом меню в разделе "Панель управления" нажмите "Основные".
  • В разделе "Настройки поиска" выберите "Поиск по всему веб-сайту", но выделите включенные сайты.
  • Нажмите "Сохранить изменения".
  • В левом меню в разделе "Панель управления" выберите "Узлы".
  • Удалите сайт, который вы ввели в процессе начальной настройки.

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

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

pip install google-api-python-client, больше информации здесь:

4-й шаг (бонус): выполните поиск

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

и в итоге:

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)

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