Решил ради интереса посмотреть статистику изменения количества входящих внешних ссылок (и ссылаюшихся сайтов) через Я.Вебмастер — и с удивлением не обнаружил в нем такой возможности. Может быть «Выгрузка внешних ссылок в виде архива» — то, что мне нужно, но формирования архива придется ждать неделю и только потом можно будет узнать, что же в нем.
Запрос через Яндекс-поиск с ключом 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 например.
Я вот прочел, и нихрена не понял, сервиса в яндекс Вебмастер разве мало для этого ?
Мне — мало.
А возможно получить список всех проиндексированных страниц яндексом?
Разумеется, интересуют только свои сайты, которые добавлены в яндекс.вебмастер
Там же есть, в вебмастере. Да и куча программ это делать умеет, парся выдачу поиска по запросу конкретного адреса сайта.
Где? Всё облазил…
Или, речь идёт о ручном «листании» 10 000 страниц навигации, чтобы увидеть список? 🙁
Достаточно поискать «парсер яндекса». Их много, бесплатных и платных.
Искал… Результаты ведут на старые темы, которые уже не обслуживаются…
Чую это то, что мне нужно на как работает не пойму вообще =(