Парсинг сайта в Google Таблицу без программиста: 3 способа
Простые страницы можно затянуть в Google Таблицу одной формулой, без кода и подписок. Но формулы не берут маркетплейсы, сайты с защитой от ботов и страницы, которые достраиваются скриптами. Разбираем, где проходит граница и что делать дальше.
Встроенные формулы: IMPORTHTML и IMPORTXML
В Google Таблицах есть функции, которые сами скачивают страницу и раскладывают её по ячейкам. Программист для них не нужен, достаточно адреса страницы.
- IMPORTHTML забирает таблицу или список целиком: =IMPORTHTML("https://адрес";"table";1), где последняя цифра — номер таблицы на странице.
- IMPORTXML вытаскивает конкретные элементы по XPath, например все заголовки товаров или цены: =IMPORTXML("https://адрес";"//h2").
- IMPORTDATA подтягивает готовый файл CSV или TSV по ссылке. Удобно, если поставщик публикует прайс файлом.
В русской локали аргументы разделяются точкой с запятой, а не запятой, и это частая причина ошибки. XPath нужного элемента проще всего получить так: правый клик по элементу в Chrome → «Просмотреть код» → правый клик по строке кода → «Copy XPath». Скопированный путь часто слишком длинный и ломается при малейшем изменении вёрстки. Лучше сократить его до класса элемента, например //span[@class='price'].
Где формулы перестают работать
Формулы хороши для справочников, таблиц из Википедии и статичных прайсов. На коммерческих сайтах они быстро упираются в ограничения:
- Страница собирается скриптом. Формула видит исходный HTML, а цены и карточки многие магазины подгружают через JavaScript уже в браузере. Результат — пустая ячейка или ошибка «Импортированный контент пуст».
- Защита от ботов. Запрос идёт с серверов Google, а не с вашего компьютера. Крупные площадки, в том числе Wildberries и Ozon, такие запросы отсекают или отдают страницу-заглушку.
- Иностранный адрес. Серверы Google стоят за рубежом, поэтому часть российских сайтов показывает им другие цены или другой регион, а то и не отвечает вовсе.
- Обновление не по вашему расписанию. Когда пересчитывать импорт, решает Google. Для ежедневного снимка цен к определённому часу это ненадёжно.
- Нет истории. Формула показывает текущее значение и затирает прошлое. Чтобы видеть, как менялась цена, вчерашние данные нужно где-то хранить.
- Объём. Сотни формул IMPORTXML в одной книге начинают тормозить и выдавать ошибки загрузки.
Промежуточный вариант: расширения и Apps Script
Браузерные расширения-парсеры работают внутри вашего Chrome. Вы кликаете по нужным элементам, а расширение собирает их со страниц и выгружает в CSV или сразу в таблицу. Данные берёт ваш браузер с вашего адреса, поэтому проблемы с JavaScript и иностранным IP частично отпадают. Минусы: компьютер должен быть включён, а после смены вёрстки сайта шаблон приходится настраивать заново.
Google Apps Script умеет запускать сбор по расписанию и дописывать новые строки, а не перезаписывать старые, то есть копить историю. Но это уже код, пусть и небольшой. К тому же запросы снова уходят с серверов Google, так что защищённые сайты скрипт не пройдёт, как и формулы.
Отдельно проверьте, что именно собираете: публичные цены и характеристики товаров — одно, а персональные данные людей без их согласия собирать нельзя.
Когда сбор лучше отдать на сторону
Если цены с маркетплейсов или сайтов конкурентов нужны каждый день, связка «таблица + формулы» начинает отнимать больше времени, чем экономит. Признаки, что пора менять подход:
- ячейки регулярно пустеют, и кто-то вручную выясняет почему;
- нужны данные с защищённых сайтов: WB, Ozon, Яндекс.Карт, 2ГИС;
- важна динамика: как цена менялась за месяц, а не только сегодняшняя цифра;
- результат должен попадать не только в таблицу, но и в 1С, CRM или на ваш сайт;
- об изменениях хочется узнавать сразу, а не когда откроешь таблицу.
Наш сбор устроен так. Страницы открывает настоящий браузер с российского адреса: сайт видит обычного посетителя и показывает те же цены, что и покупателю. Сбор идёт на нашем сервере по расписанию, без присмотра, а о сбоях приходит уведомление. Каждый снимок ложится в собственную базу истории цен — сейчас в ней около 3,8 ГБ, — поэтому динамика видна за весь период, а не только за последний запуск. В Google Таблицу попадает готовый результат. Тот же поток можно отправить в 1С, в CRM или в телеграм-бот, который пришлёт сообщение, когда конкурент поменял цену.
Для вас ничего не меняется: вы открываете ту же таблицу, просто данные в ней появляются сами.
Соберём под ваш случай и покажем на ваших данных.
Сбор данных →