Как делать sleep после определенного кол-ва циклов / запросов?

zaivanza

Новичок
Пользователь
Дек 28, 2021
28
1
3
Я паршу сайт, на котором стоит ограничение 60 запросов в секунду. Как можно засыпать на секунду после 60 запросов / циклов?
Python:
item = ['FFF', 'GGG', ...]
result = []
for t in item:
    response = requests.get(url=f'https://...{t}')
    result.append(response.json())
После 60 запросов выдает ошибку:

Python:
Traceback (most recent call last):
  File "/Users/ivanburylov/PycharmProjects/scraper/scrap.py", line 15, in <module>
    result.append(response.json())
  File "/Users/ivanburylov/PycharmProjects/scraper/venv/lib/python3.10/site-packages/requests/models.py", line 901, in json
    return complexjson.loads(
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Может быть ошибку можно и по-другому обойти
 

robisho

Активный пользователь
Пользователь
Окт 19, 2020
151
26
28
Я паршу сайт, на котором стоит ограничение 60 запросов в секунду. Как можно засыпать на секунду после 60 запросов / циклов?
Python:
item = ['FFF', 'GGG', ...]
result = []
for t in item:
    response = requests.get(url=f'https://...{t}')
    result.append(response.json())
После 60 запросов выдает ошибку:

Python:
Traceback (most recent call last):
  File "/Users/ivanburylov/PycharmProjects/scraper/scrap.py", line 15, in <module>
    result.append(response.json())
  File "/Users/ivanburylov/PycharmProjects/scraper/venv/lib/python3.10/site-packages/requests/models.py", line 901, in json
    return complexjson.loads(
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Может быть ошибку можно и по-другому обойти
Думаю, что можно сделать так
Python:
item = ['FFF', 'GGG', ...]
result = []
for t in item:
    success = False
    while not success:
        try:
            response = requests.get(url=f'https://...{t}')
            result.append(response.json())
            success = True
        except:
            time.sleep(1)
 
  • Мне нравится
Реакции: zaivanza

zaivanza

Новичок
Пользователь
Дек 28, 2021
28
1
3
Думаю, что можно сделать так
Python:
item = ['FFF', 'GGG', ...]
result = []
for t in item:
    success = False
    while not success:
        try:
            response = requests.get(url=f'https://...{t}')
            result.append(response.json())
            success = True
        except:
            time.sleep(1)
Спасибо, помогло
 

Форум IT Специалистов