Что такое Яндекс.XML
Яндекс.XML — сервис, позволяющий отправлять запросы к поисковой базе Яндекса и получать ответы в формате XML.
Полезные ссылки :
- Официальная документация Яндекс.XML
- Новые правила использования Яндекс.XML
- Яндекс.XML: автоматизация получения данных о часовых ограничениях
Сервис является бесплатным и позволяет:
- организовать поиск по сайту или порталу;
- создать приложение, которое использует возможности поиска, например — определение позиций вашего сайта, анализ поисковой выдачи и тд.
Для того чтобы воспользоваться сервисом Яндекс.XML необходимо перейти по адресу: https://passport.yandex.ru/auth?mode=auth&retpath=https%3A%2F%2Fxml.yandex.ru%2Fsettings%2F и ввести в форме авторизации данные вашей учетной записи в поисковой системе, проще говоря — доступы от почтового ящика. После авторизации, вы окажитесь в разделе «Настройка».
Интерфейс сервиса интуитивно понятен и вам не составит труда разобраться в нём. Обратите внимание на пункт «URL для запросов». В нем вы можете увидеть следующие параметры:
- «user» — имя пользователя, которые вы ввели при авторизации;
- «key» — система автоматически сгенерирует этот параметр.
Каждый раз при отправке запросов, вам необходимо будет указывать эти параметры.
Поле «Основной IP-адрес» — вводим IP, с которого будут отправляться запросы. Например: IP-адрес домена сайта.
Яндекс.XML предоставляет доступы к трем типам поиска:
- русскому;
- турецкому;
- мировому.
В отличие от прямого парсинга страницы поиска, Яндекс.XML предотвращает различные запреты поисковой системы в виде капчи, но существуют лимиты на запросы.
Яндекс.XML лимиты
Лимит Яндекс.XML — ограничение на количество запросов к базе поисковой системы. Каждому подтвержденному в вебмастере сайту поисковая система выделяет определенное количество лимитов, это число зависит от качества сайта.
Обращаем ваше внимание, если право на управление сайтом подтвердили несколько пользователей, лимиты получает только первый владелец сайта.
Перейдем в раздел «Лимиты». Здесь можно увидеть общее количество лимитов в день, а также количество лимитов по подтвержденным сайтам.
Также существует ограничение по количеству отправляемых запросов в сутки. Внизу страницы представлена диаграмма, в которой указано количество лимитов, которое можно потратить каждый час.
Как пользоваться Яндекс.XML: парсер поисковой выдачи Яндекс
Каждый день SEO-специалист анализирует большой объем информации с совершенно разных источников: это могут быть как сайты конкурентов, так и результаты выдачи поисковых систем и тд. Использование Яндекс.XML в своей работе может значительно упростить процесс анализа выдачи.
Для того чтобы понять принципы использования Яндекс.XML на практике мы реализуем простое и популярное приложение «Парсер подсветок сниппета», но помните — все зависит от ваших целей, поэтому анализировать выдачу можно по совершенно различным критериям.
Для реализации парсера (кроме Яндекс.XML и основ знаний по языку PHP) необходимо будет скачать библиотеку PHP Simple HTML DOM Parser. А также нам нужен домен и место на хостинге, на котором будут хранится файлы скриптов. И так, приступим.
Этап 1. Яндекс.XML: настройка
Сначала пройдите авторизацию. Для этого переходим в сервис xml.yandex.ru, нажимаем на кнопку «Начать работу» и вводим свои доступы.
Переходим в раздел «Настройки». В поле «Основной IP-адрес» вводим IP сайта с которого будут отправляться запросы, поле «Тип поиска» выбираем «русский», ставим галочку «Я принимаю условия Лицензионного соглашения» и нажимаем на кнопку «Сохранить».
2 Этап. Формирование тестового запроса
Переходим в раздел «Тестовый запрос». Формируем значения параметров и получаем конечный запрос.
В примере, мы будем использовать запрос вида: https://yandex.ru/search/xml?user=Login&key=Api-key&query=Test&lr=193
где:
- Login — имя пользователя;
- Api-key— API-ключ;
- Test— текст поискового запроса;
- Идентификатор страны/региона поиска — по умолчанию будем использовать 193 (Воронеж).
Сформированный запрос уже можно использовать, для этого достаточно вставить его в строку браузера. Кстати, если воспользоваться данным запросом с другого IP, мы получим следующий результат:
Этап 3. Создание страницы
В папке на вашем хостинге создаем страницу (yandex.php). Для удобства пользования предусмотрим 2 поля:
- поля ввода поискового запроса;
- список для выбора региона поиска (в нашем случае их два: Москва и Воронеж).
Код страницы, который можно просто скопировать:
<!DOCTYPE html> <html> <head> <title>Пример использования Яндекс.XML: парсер сниппета поисковой системы Яндекс</title> </head> <body> <form method="post" action="yandex-result.php"> <b>Введите поисковую фразу:</b> <input name="key" type="text" size="20"> <b>Введите регион:</b> <select name="city"> <option value="193">Воронеж</option> <option value="213">Москва</option> </select> <input type="submit" value="Отправить"> </form> </body> </html>
Этап 3. Подключение парсера
Далее в эту папку необходимо закинуть файл парсера (simple_html_dom.php), а также создать вторую страницу(yandex-result.php), ниже приложен код с комментариями (надеюсь, вопросов не возникнет).
Код страницы, который можно просто скопировать:
<?php //Подключаем библиотеку парсера include_once('simple_html_dom.php'); //Выводим введенный нами поисковой запрос echo('<b>Результат по запросу:</b> '.$_POST['key'].''); //Парсим страницу по сформированному запросу: $html = file_get_html('https://yandex.ru/search/xml?user=XXX&key=YYY&query='. urlencode($_POST['key']).'&lr='.$_POST['city']); //Выводим результат в текстовое поле echo('<textarea name="comment" cols="40" rows="3">'.$html.'</textarea>'); ?>
Этап 3. Результат
В итоге на хостинге в папке должны находиться следующие файлы:
- yandex.php
- simple_html_dom.php
- yandex-result.php
Далее обращается к файлу на вашем хостинге с именем yandex.php, вводим необходимый поисковой запрос и выбираем регион:
После нажатия на кнопку «Отправить», в текстовом поле отобразиться результат поисковой выдачи только в формате XML:
Если мы проанализируем полученный результат мы увидим, что:
- ссылка на сайт содержится в тегах <url>;
- заголовок сниппета содержится в теге <title>;
- описание сниппета содержится в теге <passage>;
- а необходимые нам слова из подсветок содержаться в теге <hlword>.
И вот теперь нам нужен парсер, который поможет получить необходимые нам значения из этих тегов. Дописываем код на нашей странице (yandex-result.php), которая будет парсить только слова в тегах <hlword>.
Код страницы, который можно просто скопировать:
<?php //Подключаем библиотеку парсера include_once('simple_html_dom.php'); //Выводим введенный нами поисковой запрос echo('<b>Результат по запросу:</b> '.$_POST['key'].''); //Парсим страницу по сформированному запросу: $html = file_get_html('https://yandex.ru/search/xml?user=XXX&key=YYY&query='. urlencode($_POST['key']).'&lr='.$_POST['city']); //Выводим результат в текстовое поле echo('<textarea name="comment" cols="40" rows="3">'.$html.'</textarea>'); //Вывод всех слов из подстветки сниппета foreach($html->find('hlword') as $element) { echo $element->innertext.' / '; } ?>
Вновь запускаем страницу yandex.php с теми же параметрами:
Теперь мы можем считать, что результат достигнут, мы реализовали с вами «Парсер подсветок в поисковой системе Яндекс». Для ленивых прикладываю архив со скриптами (скачать бесплатно).
Для того чтобы улучшить результат, можно привести слова к начальной форме с помощью алгоритма phpMorphy , а также исключить повторяющиеся слова.
Удачи!