Парсер выдачи Яндекса: как собрать топ и позиции без бана

· Яндекс · парсинг

Яндекс-парсер нужен всем, кто работает с выдачей чаще пары раз в неделю: снять позиции по семантике, собрать топ-10 конкурентов под кластеризацию, проверить, кто вылез по коммерческому запросу в нужном городе. Общая механика парсинга выдачи (капча, прокси, JSON вместо HTML) разобрана в статье что такое SERP API - повторяться не буду. Здесь только про яндексовую специфику, из-за которой свой парсер под Яндекс отдельно капризничает.

Антибот Яндекса срабатывает раньше, чем у других

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

Второй нюанс - поведенческие сигналы. Яндекс смотрит не только на частоту запросов, но и на то, как «пользователь» себя ведёт: есть ли куки, был ли переход, дёргает ли скрипт страницы ровными интервалами. Голый цикл по &p=0,1,2 палится за десяток запросов. Обойти это можно, но это уже проект с прогретыми профилями и рандомизацией, а не скрипт на вечер.

В выдаче Яндекса не только органика

Главная ловушка самописного парсера - считать позицию по всем блокам подряд. Выдача Яндекса напичкана не-органикой: спецразмещение Директа сверху и снизу, колдунщики (быстрые ответы, картинки, карты), карточки Яндекс Услуг и Яндекс Бизнеса, товарная галерея. Если наивно нумеровать все ссылки сверху вниз, ваш сайт на «третьем месте» окажется на самом деле первым в органике - под ним просто два рекламных блока.

Из-за этого позиции «плавают»: сегодня Директ выкупил спецразмещение, завтра нет, и номер вашей строки меняется, хотя в органике ничего не двигалось. Готовый парсер отделяет органику от рекламы и колдунщиков заранее, и вы сравниваете сопоставимые числа. Наш ответ по Яндексу отдаёт органическую выдачу отдельным массивом, так что позиция считается по ней, а не по рекламе.

Регион lr - половина точности

Выдача Яндекса зависит от города сильнее, чем кажется. По коммерческому запросу Москва и Екатеринбург покажут почти не пересекающиеся топы. Регион задаётся кодом lr (Ленинград-регион, историческое название параметра), и это тот же самый код, что использует Яндекс XML. Нужный номер города берётся из справочника регионов. Работаете не по yandex.ru, а по Беларуси, Казахстану или Турции - доменная зона (by, kz, com.tr) задаётся отдельным параметром. Почему без фиксированного региона график позиций превращается в шум, подробно в заметке про проверку позиций по регионам.

Если стоит Key Collector или софт под Яндекс XML

Многие инструменты (Key Collector, TopSite, SiteAnalyzer) умеют забирать выдачу только в формате Яндекс XML и упираются в его суточные лимиты. Переписывать их не нужно: та же выдача Яндекса отдаётся и в XML-формате, совместимом с этими программами. Вставляете ссылку из кабинета в настройки XML - и софт парсит Яндекс как привыкли, но без лимитов и капч аккаунта. Как переехать с XMLRiver, XMLStock и подобных без переделки, расписано в статье про аналог XMLRiver и XMLStock.

Сколько это стоит и как не переплатить

Страница выдачи стоит 0.01 ₽, тысяча страниц - 10 ₽. При регистрации на баланс падает 10 ₽, то есть первая тысяча страниц бесплатная: хватает прогнать свою семантику и посмотреть на JSON вживую. Одна цена на Яндекс, Google и Bing, поиск регионов бесплатный.

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

Частые вопросы

Законно ли парсить выдачу Яндекса?

Парсинг публичной выдачи для анализа позиций и конкурентов - обычная практика SEO, а не взлом: данные отдаёт сам поисковик, вы их не крадёте. Ограничения Яндекса касаются нагрузки и автоматизации на его стороне, поэтому съём через API, где нагрузку держит сервис, снимает и этот вопрос.

Нужны ли прокси для яндекс-парсера?

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

Есть ли бесплатный лимит?

Да. Стартовые 10 ₽ на балансе - это 1000 страниц выдачи бесплатно, карта для регистрации не нужна.

Как задать город в парсере Яндекса?

Кодом региона lr. Например, Москва - 213, Санкт-Петербург - 2; полный список в справочнике.

Проверить всё это можно без единой строки кода: вставьте список запросов на странице проверки позиций в Яндексе и посмотрите на результат, а к API вернётесь, когда захотите автоматизировать.


Читайте дальше