@sanglobalenus

Как улучшить парсер?

Добрый день!

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

soups = []

list_names = ['Александр', 'Иван']
for name in tqdm(list_names):
    for number in tqdm(range(2,4)):    
        headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36'}
        p = {'searchQuery' : name, 
             'page' : number}
        r = requests.get(f'https://cs/agents', params = p, headers=headers, cookies={'abc': 'all', 'count': '10'})

        
        soups.append(r.text)


<html>
<head><title>504 Gateway Time-out</title></head>
<body bgcolor="white">
<center><h1>504 Gateway Time-out</h1></center>
</body>
</html>
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
  • Вопрос задан
  • 73 просмотра
Решения вопроса 1
SoreMix
@SoreMix Куратор тега Python
yellow
Это уже сервер ругается. Как варианты я бы посмотрел на

1. Поставить задержку между запросами. Думаю, что на популярных именах очень много данных и сервер падает
2. Добавить банальную проверку уровня if r.status_code != 200:. И если статус код не 200, то отправлять запрос на эту же страницу заново, пока она не ответ нормально.
3. Ко второму пункту можно добавить число попыток, допустим 3 ретрая через каждые 5-10 секунд. Если после трех попыток не получилось - переходим к следующей страницы (ну или к следующему имени)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы