Парсинг рейтинга блогов Яндекса

Я понимаю, что большинство моих читателей - новички или вообще не занимаются веб-мастерством, но надеюсь, что хоть кто-то сталкивался с этой задачей.

Задачей является парсинг рейтинга блогов Яндекса. Сейчас я его провожу напрямую, то есть загружаю нужную html-страницу с помощью Simple HTML DOM парсера и осуществляю поиск текста в теге tr с классом found, а затем текста в теге td с классом first-column.

Вроде всё работает и никаких проблем не возникает в общих случаях. Но сегодня проверка позиции в рейтинге моего сайта приводит к нулевому результату, хотя позиции других сайтов определяются отлично. При этом вчера всё работало на ура.

Чтобы проще было разобраться вам, пишу код, который использую:

<?php
include('simple_html_dom.php');
$domain = 'sitestroyblog.ru';
$ya_top = file_get_html('http://blogs.yandex.ru/top/?username=' . $domain);
$find = (integer) $ya_top -> find('tr.found td.first-column', 0) -> innertext;
print_r($find);
?>

В переменную $domain можете вставить свой домен и проверить, корректно ли определяется позиция вашего сайта. Но у меня ошибка возникает именно с моим доменом, позиции других испытуемых определяются отлично.

Хочется узнать кто занимался подобной задачей и каким образом это осуществляли? Возможно есть более простой способ или Яндекс может передавать данные через XML файлик, как это работает с тИЦ и каталогом яндекса?

P.S. По секрету скажу, что готовлю небольшую разработку-сюрприз для вас, для этого и решаю данную задачу. 😉

Среди блоггеров проводится интересный конкурс с призовым фондов в $1000 и кубками для победителей. Спешите участвовать и выигрывать!

В очередной раз манимейкеры предлагают почитать как заработать на блоге. Возможно, у кого ещё не получилось, в этот раз вам повезёт?

Вам также будет интересно почитать и следующие записи

6 комментариев

  • Олег:

    Какая ошибка возникает?

  • Сергей Фещуков:

    @ Олег, я же говорю, нулевой результат выдает. Если подробнее, скрипт отлично парсит страницу, а вот функция find никак не может найти нужный тег. Пробовал вывести полученный объект $ya_top в виде кода ( print_r() ), у меня страница до конца даже открыться не может. :) Обычный вывод функции ( print() или echo() ) формирует страницу, где нужный тег имеется.

  • Сергей Фещуков:

    Сегодня сместился по рейтингу на другую страницу, определяется позиция теперь. Но, всё же, проблема периодически появляется и она не решена. Может есть другой способ парсинга топа Яндекса?

  • Олег:

    Сейчас работает правильно.
    В случае ошибок можно поделить поиск на 2 этапа и выводить промежуточные результаты, чтобы понять почему не ищет.
    $find = 0;
    foreach($ya_top -> find(‘tr.found’) as $tr){
    $find = (integer) $tr -> find(‘td.first-column’,0)->innertext;
    }

  • Сергей Фещуков:

    @ Олег, как отладочный вариант этот цикл можно попробовать использовать. Но смысла в цикле я не могу увидеть, потому как тег с классом found единственный на странице.

  • Олег:

    Да, только как отладочный. Ведь почему-то скрипт не работал, хотя я пробовал на нескольких блогах — возвращало правильный результат.

  • Добавить комментарий