Ответ 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
, больше информации здесь:
- repo: https://github.com/google/google-api-python-client
- Дополнительная информация: https://developers.google.com/api-client-library/python/apis/customsearch/v1
- полные документы: https://api-python-client-doc.appspot.com/
4-й шаг (бонус): выполните поиск
Итак, после настройки, вы можете следовать образцам кода из нескольких мест:
-
простой пример: https://github.com/google/google-api-python-client/blob/master/samples/customsearch/main.py
-
cse()
function docs: https://google-api-client-libraries.appspot.com/documentation/customsearch/v1/python/latest/customsearch_v1.cse.html
и в итоге:
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)
После некоторой настройки вы можете написать некоторые функции, которые ведут себя точно так же, как ваш фрагмент, но я пропущу этот шаг здесь.