Сохранение статистики внешних входящих ссылок из Яндекс.Вебмастер

Решил ради интереса посмотреть статистику изменения количества входящих внешних ссылок (и ссылаюшихся сайтов) через Я.Вебмастер — и с удивлением не обнаружил в нем такой возможности. Может быть «Выгрузка внешних ссылок в виде архива» — то, что мне нужно, но формирования архива придется ждать неделю и только потом можно будет узнать, что же в нем.

Запрос через Яндекс-поиск с ключом link (вида http://yandex.ru/yandsearch?text=link%3D%22dimio.org%2F*%22&lr=2) выдает сильно отличающийся от вывода Я.Вебмастер результат. Интернеты вообще сообщают, что ключ link не поддерживается Яндексом уже несколько лет.

Оставалось только одно — забирать интересующую информацию прямо со страницы из Вебмастера. Сделал небольшой скрипт на perl, который и решает поставленную задачу. Скрипт целиком доступен на отдельной странице, в заметке остановлюсь подробнее только на паре моментов.

Итак, первое, что нужно сделать для получения информации от сервиса Яндекс.Вебмастер (помимо того, что зарегистрироваться в самом сервисе и добавить в него нужные сайты конечно) — это авторизоваться в службах Яндекса. В интернете нашел несколько примеров для php, снабженных домыслами разной степени достоверности о значениях скрытых полей формы авторизации. Моя функция для входа в Яндекс выглядит так (неочевидные значения полей прокомментированы):

sub ya_login {
    my ($ua, $opt) = @_;

    my $response = $ua->post( $opt->{ya_login_url},
      [
      'from'        => 'passport',
      'idkey'       => ya_get_idkey($ua, $options),
      'display'     => 'page',
      'login'       => $opt->{ya_login},
      'passwd'      => $opt->{ya_pass},
      'timestamp'   => time * 1000,
      ]);
        die "$response->status_line\n" unless $response->is_success;
}

Вызывают интерес поля timestamp и idkey. Первое представляет собой просто число миллисекунд, прошедших от «начала эпохи Unix«. Соответственно результат вызова функции time (число в секундах) нужно перевести в миллисекунды. Второе поле — idkey — генерируется при заходе на какую-либо страницу Яндекса. И самое простое — получить его значение из кода страницы следующим образом:

sub ya_get_idkey {
    my ($ua, $opt) = @_;

    my $response = $ua->get( $opt->{ya_login_url} );
        die "$response->status_line\n" unless $response->is_success;
    #my $idkey = $1 if
    my @idkey = $response->decoded_content =~
        m{ name="idkey" \s value="([\d\w]{22})" \s /> }msx;

    return $idkey[0];
    #return $idkey;
}

Остальные поля формы авторизации вопросов вызывать не должны — логин и пароль от Яндекса указываются внутри скрипта как значения ya_login и ya_pass.

Сайты, для которых нужно сохранять значения внешних входящих ссылок, перечисляются в $hosts:

my $hosts = {
    'dimio.org'     => '0000001',
    'dimio-blog.lj' => '0000002',
};

Названия указываются произвольные (они будут присвоены именам файлов, хранящих статистику, так что не стоит использовать неподдерживаемые оболочкой символы), цифры — копируются из панели Я.Вебмастер (id сайтов). В savedir указывается путь до каталога, в котором будут созданы файлы со статистикой.

Я добавил вызов скрипт в расписание cron несколько раз в сутки (поскольку значения числа входящих внешних ссылок и ссылающихся сайтов имеют свойство колебаться от запроса к запросу). Результаты можно обработать в электронных таблицах типа Calc или Excell либо каким-то скриптом с построением графика по среднесуточным значениям через gnuplot например.



Category Рубрики: Интернет, Сервисы | Tag Метки: , , , | Comments 8 комментариев »

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

  1. Вадим says:

    Я вот прочел, и нихрена не понял, сервиса в яндекс Вебмастер разве мало для этого ?

  2. Witch_You says:

    А возможно получить список всех проиндексированных страниц яндексом?
    Разумеется, интересуют только свои сайты, которые добавлены в яндекс.вебмастер

    • dimio says:

      Там же есть, в вебмастере. Да и куча программ это делать умеет, парся выдачу поиска по запросу конкретного адреса сайта.

  3. Witch_You says:

    Искал… Результаты ведут на старые темы, которые уже не обслуживаются…

  4. Чую это то, что мне нужно на как работает не пойму вообще =(

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