Прошлый пост показал, что дуэтом с ChatGPT можно написать работоспособный скрипт на Python, который будет парсить нужные данные с нужного сайта. Работа с пагинацией, которую предложил робот, с первого раза успехом не увенчалась. Пришло время это исправить.
Скрипт, который отказался работать (но выглядел красиво), был такой

Я его запустил, зафиксировал ошибки и написал такой промпт
Нужно внести изменения в код пагинации, так как он не работает (возвращает значение "Следующая страница не найдена"
# --- Переход на следующую страницу ---
try:
next_button = driver.find_element(By.CSS_SELECTOR, "a.pagination__next")
if "disabled" in next_button.get_attribute("class"):
print("\nДостигнута последняя страница.")
break
else:
driver.execute_script("arguments[0].scrollIntoView(true);", next_button)
smart_sleep(1, 3)
next_button.click()
page_number += 1
print("Переходим на следующую страницу...")
smart_sleep(4, 6)
except NoSuchElementException:
print("\nКнопка 'Следующая страница' не найдена. Завершение.")
break
На сайте элементы пагинации (цифры) помечены как pagination__item а кнопка "Вперед" как pagination__item pagination__button. Если в коде изменить next_button = driver.find_element(By.CSS_SELECTOR, "a.pagination__next") на next_button = driver.find_element(By.CSS_SELECTOR, "a.pagination__item"), то скрипт доходит до второй страницы и затем возвращается к первой - и так по кругу, не уходя далее второй. Получается бесконечный цикл. Нужно это поправить. Конкретно в данном случае -- всего 23 страницы.
Здесь я помог только с определением стилей в коде страницы сайта и вообще не пытался разобраться в проблемах кода, написанного роботом, возложив эту миссию на него самого.
На этот раз он думал бесконечно долгих 10 секунд).

Результатом стал полностью переработанный скрипт с пояснениями всей логики.

Не менее ценные комментарии после генерации всего скрипта с учетом изменений логики пагинации и мелких доработок.

Теперь скрипт парсит все, даже длинные страницы с пагинацией, независимо от количества «подстраниц».

Продолжение следует…
