Выполнение поиска Google в python с API, возвращаемым с KeyError - PullRequest
1 голос
/ 01 апреля 2020

Я использую точно такой же код в этом ответе , но это не сработало.

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)

Результат показывает KeyError: 'items'

Затем я попытался удалить ключ и посмотреть, каков будет результат.

Кажется, что нет никаких ключей с именем "items"

Поэтому вопрос таков:

Как я могу настроить код и получить список ссылок, попавших в топ 20 результатов поиска Google?

Заранее спасибо.

Сандра

1 Ответ

1 голос
/ 01 апреля 2020

Это происходит, когда запрос не имеет результата. Если бы только он имел результаты, он попадает под res ["items"]. Поскольку у вас нет результата, ключ элементов не генерируется.

Созданная вами система пользовательского поиска может быть доступна только для очень немногих URL. Таким образом, результат может быть пустым.

Убедитесь, что для вашей конфигурации пользовательского поиска в приложении для поисковой системы, расположенном в меню «Настройка» -> «Основы» c (вкладка) -> «Поиск сайтов (раздел)», установлено значение "Поиск по всей сети, но выделение включает сайт".

Кроме того, для кода вместо непосредственного возврата res ["items], проверьте, присутствует ли res [" items "], иначе вернет None. Тогда исключение KeyError не произойдет.

if "items" in res.keys(): 
    return res["items"] 
else: 
    return None
...