Парсинг сайтов в Excel: выгрузка результатов
В каком формате отдавать собранные данные, почему Excel не всегда лучший выбор, как избежать типовых проблем с кодировкой и числами и как устроить регулярное обновление.
Все статьи гида Парсинг данных · 11
Собрать данные - половина задачи. Вторая половина - отдать их в виде, в котором с ними можно работать, и здесь есть неочевидные ловушки.
Выбор формата
Электронная таблица. Для человека: посмотреть, отсортировать, отфильтровать. Плюс - типы сохраняются, кодировка не является проблемой, можно оформить.
CSV. Для передачи между программами. Простой, открывается везде, и именно с ним связана большая часть проблем: кодировка, разделители, кавычки внутри значений.
База данных. Для объёма и регулярного использования. Обязательна, если данные обновляются и нужна история.
JSON. Для вложенных структур, которые в плоскую таблицу не укладываются.
Частая ошибка: использовать таблицу как хранилище. На десятках тысяч строк она становится медленной, а при регулярном обновлении - хрупкой. Правильная схема на объёме: данные в базе, выгрузка в таблицу по требованию.
Типовые проблемы
Кодировка. Классика: вместо букв нечитаемые символы. Причина в том, что файл сохранён в одной кодировке, а открывается в другой. Решается указанием кодировки при импорте или сохранением сразу в формат таблицы.
Артикулы становятся числами. Ведущие нули исчезают, длинные значения превращаются в экспоненциальную запись. Такие поля должны быть текстовыми - помечайте их при импорте или сохраняйте сразу в формате таблицы с заданными типами.
Даты угадываются неверно. Значение, похожее на дату, будет распознано как дата, иногда в чужом формате. Особенно неприятно с артикулами вида «5-10».
Разделители. Значение с запятой внутри ломает CSV, если не экранировано. Кавычки внутри значения - та же история.
Переносы строк в ячейке. Описание с абзацами превращает одну строку в несколько.
Числа с пробелами и валютой. Приводите к числу при сборе, а не потом в редакторе.
Общее правило: приводите данные к нужным типам при сборе, а не надейтесь, что таблица угадает. Она угадает, и не так - см. парсинг на Python.
Структура выгрузки
Что стоит включать помимо самих данных:
- Дату и время сбора. Без этого через месяц непонятно, насколько данные свежи.
- Источник для каждой строки. Особенно при сборе с нескольких сайтов.
- Условия сбора там, где они влияют: регион, тип цены - см. парсинг товаров.
- Ссылку на исходную страницу. Позволяет проверить руками, и это экономит массу времени при разборе расхождений.
- Признак проблемы. Строки, где часть полей не собралась, должны быть помечены, а не выглядеть как полноценные.
Отдельный лист или файл со сводкой - число собранных записей, число ошибок, время выполнения - превращает выгрузку в отчёт, по которому видно, стоит ли данным доверять.
Регулярное обновление
Если выгрузка нужна не один раз:
Не перезаписывайте файл. Храните версии или пишите в базу, а таблицу генерируйте. Перезаписанный файл нельзя сравнить с предыдущим.
Отдельно отмечайте изменения. Что появилось, что исчезло, что изменилось - обычно ценнее полного среза.
Автоматизируйте доставку. Файл, который надо забрать руками, забирать перестанут. Отправка на почту или выкладывание в общий каталог по расписанию решают это - см. примеры воркфлоу.
Уведомляйте о сбое. Отсутствие файла должно быть заметно. Пустой отчёт лучше отсутствующего: по нему видно, что система работала.
Обзор - гид по парсингу. Как забрать таблицу прямо со страницы - парсинг таблиц.
Вопросы и ответы
В каком формате лучше отдавать результаты парсинга?
Для просмотра человеком - файл электронной таблицы, для передачи между программами - CSV, для регулярного использования и объёма - база данных. Частая ошибка - использовать таблицу как хранилище: на десятках тысяч строк она становится медленной и хрупкой.
Почему в Excel вместо русских букв непонятные символы?
Из-за кодировки CSV: файл сохранён в одной, а открывается в другой. Решается либо явным указанием кодировки при импорте, либо сохранением сразу в формате электронной таблицы, где кодировка не является отдельной проблемой.
Почему артикулы превращаются в числа и теряют нули?
Потому что таблица сама угадывает тип столбца и приводит текст к числу: ведущие нули пропадают, длинные значения записываются в экспоненциальном виде, а что-то может быть распознано как дата. Такие поля надо помечать текстовыми при импорте или сохранять сразу в формате таблицы с заданными типами.
Ещё по теме
- Парсинг данных с сайта: как это устроеноГид
- Парсинг сайтов конкурентов: что можно собирать и зачемКакие данные о конкурентах имеет смысл собирать, как построить регулярный мониторинг, что делать с расхождениями и где проходит граница допустимого.
- Защита от парсинга сайта: что работает, а что нетКакие меры защиты от автоматического сбора действительно работают, какие только мешают пользователям, и как выбрать уровень защиты под свою ситуацию.
- Парсинг сайтов на Python: Playwright, ретраи, дедупликацияКакой стек выбрать под задачу, как писать селекторы, которые переживают правки вёрстки, как устроены ретраи и почему дедупликация нужна с самого начала.
Сделаю под ключ
Соберу парсер под ваш источник
С обходом защиты, прокси и выгрузкой в таблицу, базу или Telegram. Работает по расписанию без вас.
от 300 $ · 3-7 дней
«Очень быстрый парсинг, спасибо большое! Даже получилось чуть больше номеров, всем рекомендую! Делал заказ 2 раза, всё устраивает, буду обращаться ещё.»