В данной статье разберем основные случаи, при которых парсинг сайта не возможен, а так же решения.
В контексте парсинга и индексации сайты можно разделить на 3 вида:
- Классический: Монолит
- Динамический: RestAPI/Ajax/SPA
- Любой но с наличием 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):