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. 25 Июл 2010 17:44 | #1

    че-то у меня не получается…

  2. 30 Окт 2010 20:19 | #2

    На практике все намного хуже чем в данной статье. После нескольких запросов Яндекс возвращает не результат, а капчу.. ПОэтому…

  3. 30 Окт 2010 21:46 | #3

    @PHP программист
    Сам лично делал массовую проверку, и яндекс возвращал нужный результат.

  4. 06 Ноя 2010 2:46 | #4

    А ты попробуй запросов 10 отправить.. с маленьким интервалом… посмотрим что тебе Яндекс в ответ выведет.

  5. 06 Ноя 2010 13:14 | #5

    @PHP программист
    Я делал проверку по 4-5 сайтов, с интервалом в 1 секунду для каждого сайта. Яндекс возвращал нужный результат.
    Мое мнение: Должны быть рамки разумного для применения этого скрипта, так как массовая проверка от 10 и выше сайтов с низким интервалом под силу только Curl или сокетам. Так же можно проверку сделать с помощью парсинга XML (яндекс – бара).

  6. 22 Ноя 2010 22:40 | #6

    acsy, правильно ты заметил, такой скрапт можна использлваь где угодно

  7. 21 Авг 2011 17:54 | #7

    А есть парсер всех сайтов с Яка? То есть мне нужна база всех сайтов находящихся в Яке. И сколько стоит написать его?

  8. 22 Авг 2011 0:26 | #8

    @Марик
    Лично у меня его нет, можете поискать в гугле готовое решение. А вот написать готовый скрипт я даже незнаю сколько точно. Фрилансеры возьмут не меньше 60-70$

  9. java
    04 Сен 2011 19:49 | #9

    А зачем это нужно? Можно просто зайти и посмотреть каталог