Содержание

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

В контексте парсинга и индексации сайты можно разделить на 3 вида:

  1. Классический: Монолит
  2. Динамический: RestAPI/Ajax/SPA
  3. Любой но с наличием XML-фида с товарами

1. Классический: Монолит

Монолит по-умолчанию использует SSR - server-side rendering (рендеринг на стороне сервера). Это когда запрашиваем site.ru/page/ - и получаем готовый HTML со всем ожидаемым содержимым, а браузер лишь "раскрашивает" уже готовый HTML содержащий все товары, изображения и текст.

Для большинства поставщиков SSR это даже не опция, а базовое требование, т.к. индексация для них важна не столько ради парсинга, сколько ради продвижения в поисковых системах.

99% сайтов именно такие и с ними нет проблем ни у поисковых систем (Google, Яндекс) ни у остальных парсеров.

2. Динамический: RestAPI/Ajax/SPA

Динамические сайты (SPA) плохо (либо вообще никак) работают с парсерами, поэтому Google/Yandex так плохо их индексируют.

SPA не удовлетворяет требованиям сайта который предполагается парсить/индексировать/продвигать в поисковых системах.
Ссылки на рандомные материалы по данной теме (внимание: автор данной статьи не несет ответственность за информацию в следующих источниках):
https://vc.ru/seo/242766-chto-nuzhno-znat-o-sayte-na-spa-seo-specialistu
https://vc.ru/marketing/36449-poiskovaya-optimizaciya-saytov-ispolzuyushchih-spa-prilozheniya

Динамический сайт, или RestAPI или Ajax-сайт, или SPA (это все одно и то же) по умолчанию работает без SSR, в данном случае запрашивая  site.ru/page/ мы получаем в ответ "пустую" страницу с JavaScript-кодом, который браузер на лету выполняет, как правило запрашивая товары, данные уч.записи и прочие данные в отдельных запросах. Такой сайт может понимать только браузер. 

Можно конечно разработать парсер на основе браузера (phantom/puppetter/selenium, etc) это совершенно другой уровень парсинга (в десятки раз дольше и дороже и проблемней и т.д.). Поэтому даже Яндекс до сих пор плохо парсит динамику. Не только потому что это сложно, а потому что зачастую динамика ведет себя крайне непредсказуемо и только разработчик своего творения знает что там происходит (а часто даже разработчик не знает :-D)

К счастью, уже с 2017-2019 года все современные фронтенд-фреймворки поддерживают SSR! Это значит что любой RestAPI/Ajax/SPA сайт может функционировать "как монолит", грубо говоря.

Даже если разработчик изначально не закладывал использование SSR, это не критично, данную опцию можно настроить на любом этапе разработки.

Подробнее про SSR: https://habr.com/ru/post/527310/

3. XML-фид с товарами

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

Мы не создаем свой велосипед, а используем золотой стандарт разработанный Яндексом: YML (Yandex Market Library: Яндекс библиотека товаров)

Подробнее про YML: https://yandex.ru/support/marketplace/assortment/auto/yml.html

Коротко:

Если у вас динамический/rest-api/ajax/spa сайт, но вы хотите чтоб его понимали парсеры и поисковые системы, то необходимо использовать SSR либо подключить/разработать модуль генерации фида в формате YML (Yandex Market Library)