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