При обработке результатов поиска через библиотеку google в python выдает ошибку 429: to many requests после 17 ответов?

Ссылка скопирована
1 ответ

вот ошибка:

Traceback (most recent call last):
File "C:UsersРоманDesktopсайты с пайтонsearchs_site.py", line 7, in
for j in search(qr, tld='com', lang='en', num=1, start=0, stop=None, pause=5.0):
File "C:UsersРоманAppDataLocalProgramsPythonPython38-32libsite-packagesgooglesearch__init__.py", line 312, in search
html = get_page(url, user_agent)
File "C:UsersРоманAppDataLocalProgramsPythonPython38-32libsite-packagesgooglesearch__init__.py", line 176, in get_page
response = urlopen(request)
File "C:UsersРоманAppDataLocalProgramsPythonPython38-32liburllibrequest.py", line 222, in urlopen
return opener.open(url, data, timeout)
File "C:UsersРоманAppDataLocalProgramsPythonPython38-32liburllibrequest.py", line 531, in open
response = meth(req, response)
File "C:UsersРоманAppDataLocalProgramsPythonPython38-32liburllibrequest.py", line 640, in http_response
response = self.parent.error(
File "C:UsersРоманAppDataLocalProgramsPythonPython38-32liburllibrequest.py", line 563, in error
result = self._call_chain(*args)
File "C:UsersРоманAppDataLocalProgramsPythonPython38-32liburllibrequest.py", line 502, in _call_chain
result = func(*args)
File "C:UsersРоманAppDataLocalProgramsPythonPython38-32liburllibrequest.py", line 755, in http_error_302
return self.parent.open(new, timeout=req.timeout)
File "C:UsersРоманAppDataLocalProgramsPythonPython38-32liburllibrequest.py", line 531, in open
response = meth(req, response)
File "C:UsersРоманAppDataLocalProgramsPythonPython38-32liburllibrequest.py", line 640, in http_response
response = self.parent.error(
File "C:UsersРоманAppDataLocalProgramsPythonPython38-32liburllibrequest.py", line 569, in error
return self._call_chain(*args)
File "C:UsersРоманAppDataLocalProgramsPythonPython38-32liburllibrequest.py", line 502, in _call_chain
result = func(*args)
File "C:UsersРоманAppDataLocalProgramsPythonPython38-32liburllibrequest.py", line 649, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 429: Too Many Requests

вот исходный код проги:

qr = 'allintitle:GTX1080 site:https://citilink.ru' try: 	from googlesearch import search except ImportError:  	print("Модуль 'google' не найден") #try: for j in search(qr, tld='com', lang='en', num=1, start=0, stop=None, pause=5.0): 	print(j) #except: 	#print('Запрос не обработан')

qr = 'allintitle:GTX1080 site:https://citilink.ru' try: from googlesearch import search except ImportError: print("Модуль 'google' не найден") #try: for j in search(qr, tld='com', lang='en', num=1, start=0, stop=None, pause=5.0): print(j) #except: #print('Запрос не обработан')

Дополнительно:

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Кирилл JS Ответ

Проблема, с которой вы столкнулись, связана с тем, что библиотека Google API ограничивает количество запросов к своим серверам. Ошибка 429 "Too Many Requests" означает, что ваш код делает слишком много запросов за короткое время.

Для решения этой проблемы вам необходимо добавить задержку между запросами, чтобы не превышать лимиты, установленные Google. Это позволит вашему приложению работать более стабильно и избежать ошибки 429.

Пример кода на Python с использованием библиотеки requests, который включает в себя задержку между запросами:

import requests
import time
 
url = 'https://www.googleapis.com/customsearch/v1?q=python&key=YOUR_API_KEY'
 
for i in range(20):  # делаем 20 запросов
    response = requests.get(url)
 
    if response.status_code == 200:
        print(response.json())
    else:
        print('Error:', response.status_code)
 
    time.sleep(1)  # добавляем задержку в 1 секунду между запросами

import requests import time url = 'https://www.googleapis.com/customsearch/v1?q=python&key=YOUR_API_KEY' for i in range(20): # делаем 20 запросов response = requests.get(url) if response.status_code == 200: print(response.json()) else: print('Error:', response.status_code) time.sleep(1) # добавляем задержку в 1 секунду между запросами

В этом примере мы делаем 20 запросов к Google API с задержкой в 1 секунду между каждым запросом. Это позволит избежать ошибки 429 и получить необходимые данные без проблем.

Не забудьте заменить 'YOUR_API_KEY' на ваш собственный ключ API от Google. Также убедитесь, что вы соблюдаете ограничения Google по количеству запросов в единицу времени, чтобы избежать блокировки вашего приложения.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно