Парсер на Python с нуля: собрать данные и не получить бан
Соберём парсер, который собирает данные со страниц в таблицу. Отдельно разберём то, о чём обычно молчат: как не превратить полезный скрипт в источник проблем для чужого сайта и для себя.
Шаг 1. Сначала проверить, что можно
До первой строки кода откройте robots.txt сайта и его пользовательское соглашение. Парсить чужой сайт вопреки прямому запрету — это не техническая, а юридическая история, и агент вам о ней не напомнит.
Шаг 2. Разобрать структуру страницы
Откройте страницу, найдите нужные элементы через инструменты разработчика и отдайте агенту фрагмент разметки. Так он будет работать с фактами, а не с догадками о структуре сайта.
Вот фрагмент HTML страницы: {вставить}.
Мне нужны поля: {название, цена, ссылка}.
Напиши функцию, которая достаёт эти поля
из такого фрагмента. Библиотеки: requests + bs4.
Ничего больше не добавляй.
Шаг 3. Обойти список страниц
Дальше — постраничный обход. Здесь обязательно попросите паузу между запросами: без неё скрипт превращается в маленькую DDoS-атаку, и вас забанят по адресу за первые пару минут.
Добавь обход страниц списка с пагинацией. Обязательно: пауза 1–2 секунды между запросами, адекватный User-Agent, остановка при 429 и 5xx. При ошибке — повтор не более трёх раз.
Шаг 4. Выгрузить в таблицу
CSV открывается в любой таблице и не требует ничего устанавливать. Важно попросить дозапись, а не перезапись: иначе прерванный на середине запуск сотрёт всё, что уже собрано.
Складывай результат в CSV в кодировке utf-8-sig, чтобы корректно открывался в Excel. Запись — построчно по мере обхода, а не в конце. При повторном запуске дописывай, не перезаписывай.
Шаг 5. Пережить сломанные страницы
На сотой странице обязательно найдётся товар без цены или с другой разметкой. Скрипт не должен падать — он должен пропустить запись и написать в лог, что именно не разобрал.
Шаг 6. Проверить данные глазами
Откройте выгрузку и сверьте десять случайных строк с сайтом. Парсеры чаще всего ошибаются молча: собирают не то поле или теряют часть записей, и заметить это можно только руками.