PHP парсинг – парсер яндекс каталога
Привет, друзья! Сегодня я хочу вам показать, как написать скрипт который будет проверять наличие сайта в Яндекс каталоге или говоря проще – парсер яндекс каталога. Для всего этого мы будем пользоваться стандартными функциями PHP.
И так, приступим!
Первым делом мы будем получать содержимое страницы, которое формируется исходя из результата поиска в ЯК. Для этого мы будем пользоваться функцией – file_get_contents. В качестве параметра, которое мы будем передавать функции, используется ссылка на поиск в ЯК с нашим доменом.
Пример получения содержимого страницы:
$url = "makarou.com";
$file = file_get_contents('http://search.yaca.yandex.ru/yandsearch?text='.$url.'&rpt=rs2');
$url – домен нашего сайта.
После того как мы получили содержимое страницы, нам нужно распарсить нужное нам значение и получить вывод: есть сайт в ЯК или нет его там совсем. Для этого мы воспользуемся регулярным выражением.
Пример регулярного выражения:
preg_match('!нигде\sне\sвстречается!ism',$file);
Как видно из примера мы ищем в содержимом страницы строку – нигде не встречается.
Вот теперь мы можем соединить весь код воедино и поглядеть, что из этого получилось.
Полный код – парсер яндекс каталога:
$url="makarou.com";
$file = file_get_contents('http://search.yaca.yandex.ru/yandsearch?text='.$url.'&rpt=rs2');
if (preg_match('!нигде\sне\sвстречается!ism',$file)){
echo 'Сайта <b>'.$url.'</b> нет в каталоге';
}else{
echo 'Сайт <b>'.$url.'</b> есть в каталоге';
}
Посмотреть – demo.
Как видно из примера, если регулярное выражение находит строку – нигде не встречается, то мы выводим надпись “сайта нет в каталоге” и если надпись не находит, то соответственно выводим надпись “сайт есть в каталоге”.
Этот способ подходит для проверки максимум 5 сайтов одновременно. Но чтобы решить проблему массовой проверки сайтов, я решил написать новый парсер, который может делать одиночную и массовую проверку.
Полный код – новый парсер яндекс каталога:
$url="makarou.com";
$xml=simplexml_load_file("http://bar-navig.yandex.ru/u?ver=2&url=http://".$url."/&show=1");
if(!$xml->topics->topic['title'] and !$xml->topics->topic['url']){
echo 'Сайта <b>'.$url.'</b> нет в каталоге';
}else{
echo 'Сайт <b>'.$url.'</b> есть в каталоге';
}
Посмотреть - demo.
Вот и всё дорогие друзья, надеюсь, вам окажется это полезным, ну или вашим друзьям.

Всё гениальное просто
Примерно также я подтягивал как-то курсы валют в интернет-магазинчике
Да, верно
Согласен. Я об этом как-то и не задумывался, пока определённая задача не появилась.
Хорошо написано! Действительно, можно много к чему прикрутить )
Спасибо. Да действительно можно использовать где угодно.
Чем проще код и исполняет свою задачу на 100%, тем он гениальнее.
А пакетная обработка будет работать? Когда нужно проверить скажем 1000 сайтов?
я проверял лично, работает
хмм интересно щас попробую на практике как оно будет работать)