PHP парсинг – парсер яндекс каталога | Makarou.com - когда сайты превращаются в бизнес

PHP парсинг – парсер яндекс каталога

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.

Вот и всё дорогие друзья, надеюсь, вам окажется это полезным, ну или вашим друзьям. ;)

php

Понравился пост? добавь его к себе в закладки:
Хочешь быть всегда в курсе обновлений блога? подписывайся через:
  1. 01 Июн 2010 0:09 | #1

    Всё гениальное просто :)

    Примерно также я подтягивал как-то курсы валют в интернет-магазинчике :)

  2. 01 Июн 2010 0:11 | #2

    @Never Lex
    Да, верно ;) … в принципе всё что нужно, можно тянуть с помощью регулярок.

  3. 01 Июн 2010 0:12 | #3

    @So so Def
    Согласен. Я об этом как-то и не задумывался, пока определённая задача не появилась.

  4. 01 Июн 2010 1:24 | #5

    Хорошо написано! Действительно, можно много к чему прикрутить )

  5. 01 Июн 2010 1:26 | #6

    @acsy
    Спасибо. Да действительно можно использовать где угодно. :)

  6. 01 Июн 2010 13:11 | #7

    Чем проще код и исполняет свою задачу на 100%, тем он гениальнее.

  7. 02 Июн 2010 14:19 | #8

    А пакетная обработка будет работать? Когда нужно проверить скажем 1000 сайтов?

  8. 02 Июн 2010 19:54 | #9

    @Островитянин
    я проверял лично, работает ;) то есть не блочат за массовую проверку.

  9. 30 Июн 2010 13:57 | #10

    хмм интересно щас попробую на практике как оно будет работать)