Как быстро и просто на PHP определить Индекс Цитирования и PageRank?
Давайте подумаем: и у Яндекса и у Гугла есть свои тулбары для браузеров, на которых показывается ИЦ (на Яндекс.Баре) и PR (на Google Toolbar). То есть оба бара откуда-то эти данные берут.
Посидев три минуты с анализатором запросов стало понятно, что Яндекс берёт данные по адресу:
http://bar-navig.yandex.ru/u?ver=2&url=[URL страницы]&show=1&post=1, причём в URL можно спокойно подставлять что угодно и всё будет нормально.
Проблемы оказались с Гуглом. Его адрес выглядит так:
http://www.google.com/search?c ... &ch=6[Контрольная сумма]&features=Rank&q=info:[URL страницы]. Проблема в том, что для каждого URL своя контрольная сумма, если её рассчитать неправильно или вообще убрать, то метод не сработает.
Впрочем, это тоже не стало большой проблемой.
После написания первого варианта статьи я сделал бесплатный веб-сервис определения индекса цитирования и PageRank, сервис этот расположен по адресу:
http://cy-pr.net.ru. Сервис позволяет отправить запрос методом GET или POST и возвращает ответ в текстовом или в XML формате.
Всё, что нам остаётся сделать — это отправить запрос серверу cy-pr.net.ru и получить от него ответ в текстовом формате (чтобы было проще обработать).
<?php
/*
Скрипт определения тИЦ и PR при помощи сервиса
http://cy-pr.net.ru
Авторские права ©2006 — Неверов Евгений.
Все права защищены.
Пример использования:
$r=detectCyPr('www.yandex.ru');
print_r($r);
*/
function detectCyPr($url) {
//
// $url — адрес веб-сайта, для которого нужно определить тИЦ и PR
//
// Функция возвращает ассоциативный массив со структурой:
// Array
// (
// [cy] => Индекс цитирования
// [pr] => PageRank
// )
//
$rn="
";
$http_query='GET /get?url=' . $url . '&type=text HTTP/1.0' . $rn .
'Content-Type: application/x-www-form-urlencoded' . $rn .
'Host: cy-pr.net.ru' . $rn .
'Accept: */*' . $rn .
'Connection: Keep-Alive' . $rn .
'User-Agent: CyPrChecked (
http://cy-pr.net.ru)' . $rn . $rn;
$f=fsockopen('cy-pr.net.ru', 80);
if (!$f) {
return FALSE;
} else {
@fwrite($f, $http_query);
$data='';
while(!@feof($f))
$data.=fread($f, 1024*1024);
@fclose($f);
preg_match('#CY=([0-9]+);#i', $data, $t);
$ret['cy']=$t[1];
preg_match('#PR=([0-9]+);#i', $data, $t);
$ret['pr']=$t[1];
return $ret;
}
}
?>
Если же Ваш сервер поддерживает модуль cURL, то код значительно упрощается:
<?php
/*
Скрипт определения тИЦ и PR при помощи сервиса
http://cy-pr.net.ru
Авторские права ©2006 — Неверов Евгений.
Все права защищены.
Пример использования:
$r=detectCyPr('www.yandex.ru');
print_r($r);
*/
function detectCyPr($url) {
//
// $url — адрес веб-сайта, для которого нужно определить тИЦ и PR
//
// Функция возвращает ассоциативный массив со структурой:
// Array
// (
// [cy] => Индекс цитирования
// [pr] => PageRank
// )
//
$ch=curl_init('http://cy-pr.net.ru/get.php?url=' . $url . '&type=text');
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$data=curl_exec($ch);
curl_close($ch);
preg_match('#CY=([0-9]+);#i', $data, $t);
$ret['cy']=@$t[1];
preg_match('#PR=([0-9]+);#i', $data, $t);
$ret['pr']=@$t[1];
return $ret;
}
?>
Для вызова используется команда:
$r = detectCyPr('http://www.yandex.ru');
// естественно, вместо атрибута подставьте свой адрес
echo 'ИЦ: ' . $r['cy'] . ', PR: ' . $r['pr'];
// в $r['cy'] содержится ИЦ, а в $r['pr'] — PR.
Вот так. В общем-то всё легко и просто, пользуйтесь на здоровье.
Добавил: Сталислав (14 янв 2009 г., 11:59)
Рейтинг:
(0)
Прочитано: 7739