Перейти к содержимому
PD
Парсинг данных

Парсинг таблицы с сайта: три способа

Как забрать таблицу со страницы: вручную, готовыми средствами и кодом. Что делать с объединёнными ячейками, пагинацией и таблицами, которые подгружаются скриптами.

Все статьи гида Парсинг данных · 11

Таблица - самый простой объект сбора и одновременно источник неочевидных ошибок. Разберём три способа и типовые ловушки.

Способ 1: руками

Выделить, скопировать, вставить в таблицу. Браузер обычно сохраняет строки и столбцы.

Когда годится: разовая задача, одна страница, немного строк.

Когда перестаёт: таблица разбита на страницы, строк тысячи, задачу надо повторять регулярно. Здесь копирование быстро становится дороже скрипта - и переходить стоит раньше, чем кажется, потому что ручная работа ещё и ошибается.

Ловушка: скопировалось не всё. Если строки подгружаются при прокрутке, в буфер попадёт только видимое.

Способ 2: готовыми средствами

Табличные редакторы умеют импортировать таблицы со страницы по адресу, есть расширения браузера, есть визуальные инструменты.

Когда годится: таблица размечена как таблица, доступна без авторизации, обновляется регулярно и вам нужно именно обновление.

Ограничения:

  • Работает только с настоящей разметкой таблицы. Если это набор блоков, средство её не увидит.
  • Не справляется с содержимым, которое дорисовывается скриптами.
  • Пагинация не обходится.
  • Авторизация обычно недоступна.

Полезное свойство: некоторые средства обновляют данные автоматически. Для регулярно меняющейся таблицы это готовое решение без единой строки кода.

Способ 3: кодом

Полный контроль и единственный вариант для сложных случаев.

Порядок тот же, что и в любом сборе: сначала проверьте, есть ли данные в исходном ответе. Часто таблица приходит готовой структурой в фоновом запросе - тогда разбирать разметку не нужно вовсе, и это лучший из вариантов.

Если данные в разметке, задача сводится к обходу строк и ячеек. Библиотеки для разбора умеют это из коробки, и часть инструментов превращает таблицу в структуру данных одной командой.

Подробно про стек и надёжность - парсинг на Python.

Типовые ловушки

Объединённые ячейки. Самая частая причина неверных данных. Объединённая ячейка занимает несколько строк или столбцов, и без разворачивания последующие значения съезжают. Правильно - повторить значение в каждой строке, которую ячейка покрывает.

Заголовок в несколько уровней. Двухэтажная шапка требует решения, как назвать столбцы. Лучше решить это при сборе, чем разбираться в выгрузке.

Пагинация. Таблица на пять страниц - это пять запросов, и последняя страница обычно неполная. Проверяйте общее число строк, если оно указано.

Подгрузка при прокрутке. Строки появляются по мере прокрутки. Без браузерной автоматизации не собрать.

Не таблица. Визуально таблица, а в разметке набор блоков. Обход по строкам не сработает, нужен разбор по структуре блоков.

Числа в текстовом виде. Пробелы как разделители разрядов, запятая вместо точки, валюта в той же ячейке. Приводите к числу при сборе, а не потом в редакторе.

Скрытые строки и столбцы. Есть в разметке, не видны на экране. Попадут в выгрузку, если их не отфильтровать.

Проверка результата

Три быстрые проверки, ловящие почти всё:

  1. Число строк совпадает с указанным на странице.
  2. Столбцы не съехали: посмотрите на несколько случайных строк и сравните со страницей.
  3. Типы верны: числа числами, даты датами.

Как выгрузить результат - парсинг в Excel. Обзор - гид по парсингу.

Вопросы и ответы

Как быстро скопировать таблицу с сайта в Excel?

Для разовой задачи достаточно выделить и скопировать: браузер обычно сохраняет структуру строк и столбцов. Если таблица большая или разбита на страницы, копирование становится дороже написания скрипта, и переходить к нему стоит раньше, чем кажется.

Почему таблица не копируется целиком?

Обычно потому, что на странице только часть строк: остальные подгружаются при прокрутке или находятся на других страницах. Второй случай - таблица нарисована не таблицей, а набором блоков, и структура при копировании теряется.

Что делать с объединёнными ячейками?

Разворачивать при сборе: значение объединённой ячейки повторяется в каждой строке, которую она покрывает. Иначе строки съезжают, и данные попадают не в те столбцы. Это самая частая причина того, что выгрузка выглядит правильно и содержит неверное.

Ещё по теме

Сделаю под ключ

Соберу парсер под ваш источник

С обходом защиты, прокси и выгрузкой в таблицу, базу или Telegram. Работает по расписанию без вас.

от 300 $ · 3-7 дней

Похожий кейсEtsy Keyword FinderПриложение для аудита ключевых слов Etsy на очереди задач: отправляете ID листинга и до 20 ключей, а фоновые воркеры проходят реальную выдачу шаг за шагом со скриншотами.

«Очень быстрый парсинг, спасибо большое! Даже получилось чуть больше номеров, всем рекомендую! Делал заказ 2 раза, всё устраивает, буду обращаться ещё.»

sotasoftdv · Kwork