Аналог XMLRiver, XMLStock и A-Parser для парсинга выдачи

· Яндекс XML · миграция

Если вы снимаете выдачу через XMLRiver, XMLStock, XMLProxy или XMLSeo, переезд к нам занимает примерно столько времени, сколько нужно, чтобы поменять адрес в настройках программы. Формат ответа тот же самый, параметры почти совпадают, а страница выдачи стоит 0.01 ₽. Ниже разберём, что именно менять в запросах и где сервисы всё-таки расходятся.

Почему вообще XML, а не JSON

Исторически всё выросло из Яндекс XML: официального сервиса, который отдавал выдачу в XML и раздавал лимиты по расписанию. Под этот формат написаны Key Collector, TopSite, SiteAnalyzer, KeyAssort и половина самописных парсеров рунета. Никто не станет переписывать рабочий софт ради красивого JSON, поэтому все сервисы-посредники отдают ровно ту же XML-структуру: yandexsearch → response → results → grouping → group → doc.

Мы отдаём и то, и другое. Есть /api/yandex с обычным JSON, если вы пишете свой скрипт, и /api/yandex/xml в формате Яндекс XML, если у вас уже настроен Key Collector. Ссылку с ключом для второго случая можно скопировать прямо в личном кабинете.

Что менять в запросе

Берёте свой рабочий URL и меняете адрес сервиса на наш. Дальше сверяетесь с таблицей: большинство параметров называются одинаково, потому что все они родом из того же Яндекс XML.

Что нужно XMLRiver / XMLStock JSON SEO
Авторизация user + key только key (или заголовок Authorization: Bearer)
Запрос query query, text или q
Регион Яндекса lr lr или region
Регион Google lr (XMLStock), loc (XMLRiver) region, а также loc и числовой lr
Сколько позиций groupby groupby, кратно 10, до 200
Страница page (с нуля) page (с нуля)
Доменная зона domain domain или zone (ru, com, kz, by, uz, tr)

Выглядит это так:

https://jsonseo.ru/api/yandex/xml?key=ВАШ_КЛЮЧ&query=купить+ноутбук&lr=213&groupby=50

Где мы расходимся с ними

Три момента, на которых можно споткнуться.

Параметр lr в Google. Тут единого стандарта нет вообще: у XMLStock это ID региона, а у XMLRiver код языка результатов. Мы принимаем lr как регион, только если он числовой, а язык интерфейса задаётся отдельным hl. Так работают оба сценария и ничего не ломается молча.

Глубина. У нас потолок 200 позиций за запрос: groupby=200 при page=0. Дальше двухсотой строки не уйти, но честно говоря, дальше сотой уже мало кому нужно.

Оплата пагинации. Платится только запрошенная страница: при page=1 и groupby=100 спишется за вторую сотню, а не за две. Раньше воркер шёл к нужному месту от начала выдачи и дорога тоже тарифицировалась — теперь он начинает сразу со смещения.

Но брать глубину постранично всё равно не стоит, и причина не в деньгах: выдача успевает измениться между двумя запросами. Нужны все двести — берите их одним запросом через groupby. Подробнее — в статье про параметр page.

А что насчёт A-Parser

A-Parser - это не XML-сервис, а десктопный парсер: программа, которую вы ставите на свой сервер или компьютер, покупаете лицензию и крутите сами. Внутри десятки парсеров (SE::Yandex, SE::Google и другие), многопоточность, свои прокси и аккаунты. Это мощный комбайн для тех, кому нужно парсить всё подряд большими объёмами и кто готов возиться с инфраструктурой.

Мы - другое: облачный API выдачи. Никаких лицензий, прокси и капчи - отправляете HTTP-запрос и получаете готовую выдачу в JSON или XML, платите только за фактические страницы. Если задача - снимать выдачу и позиции, а не строить парсерный цех, API проще и дешевле: не нужно содержать сервер, обновлять парсеры под изменения вёрстки и бороться с блокировками.

A-Parser JSON SEO
Формат Десктопная программа (лицензия) Облачный API (HTTP-запросы)
Инфраструктура Свой сервер, прокси, аккаунты Ничего не нужно
Оплата Лицензия + расходы на прокси 0.01 ₽ за страницу выдачи
Обновление парсеров Сами, под изменения вёрстки На нашей стороне

Про деньги

У нас 10 ₽ за 1000 страниц выдачи, то есть 0.01 ₽ за страницу, одна цена на Яндекс, Google, Bing и Вордстат. Пополнили баланс и тратите, пока не кончится. При регистрации на счёт падают 10 ₽, так что первую тысячу запросов можно сделать, вообще ничего не платя, и спокойно сравнить нашу выдачу со своей текущей.

Отдельно стоит знать про break_domain. Если вы снимаете не всю выдачу, а позицию конкретного сайта, передайте его домен, и парсер остановится, как только его встретит. Сайт нашёлся на второй странице? Заплатите за две, а не за десять.

Что делать прямо сейчас

  1. Зарегистрируйтесь и заберите ключ в кабинете. Там же лежит готовая XML-ссылка, её можно сразу вставить в Key Collector.
  2. Прогоните десяток своих обычных запросов и сравните выдачу с текущим сервисом. Тратятся копейки, а картина станет понятной сразу.
  3. Если что-то не сходится, посмотрите документацию: там расписаны все параметры и примеры ответов.

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