27 марта 2009 г. Google PR ТиЦ SEO Яндекс

Сервис SeoTools и вычисление PR и ТиЦ средствами PHP

seo.adw0rd.ru

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

Идея!

Например, пользователь заходит на сервис, вбивает домен и предполагаемые ключевые слова (если таковые имеются), после чего сервис проверяет характеристики домена и наличие мест по ключевикам и предлагает другие варианты ключевиков, более подходящие для домена. Так же можно внедрить морфо-словари и предлагать схожие слова и т.д.

После чего формировать диаграммы и графики и рассчитывать примерный рост и т.д. То есть давать прогнозы!

Сервис

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

Вычисление PR

Как и обещал выкладываю класс по определению PR:

< ?php

class googlePageRank {

    public static function get($url)
    {
        define("GOOGLE_MAGIC", 0xE6359A60);

        $url = 'info:'.$url;
        $ch = self::GoogleCH(self::strord($url));
        $file = "http://www.google.com/search?client=navclient-auto&ch=6$ch&features=Rank&q=$url";
        $data = seoTools::curlGetContent($file);

        return trim($data);
    }

    public static function GoogleCH($url, $length=null, $init=GOOGLE_MAGIC)
    {
        if (is_null($length)) {
            $length = sizeof($url);
        }
        $a = $b = 0x9E3779B9;
        $c = $init;
        $k = 0;
        $len = $length;
        while($len >= 12) {
            $a += ($url[$k + 0] + ($url[$k + 1] < < 8) + ($url[$k + 2] << 16) + ($url[$k + 3] << 24));
            $b += ($url[$k + 4] + ($url[$k + 5] << 8) + ($url[$k + 6] << 16) + ($url[$k + 7] << 24));
            $c += ($url[$k + 8] + ($url[$k + 9] << 8) + ($url[$k + 10] << 16) + ($url[$k + 11] << 24));
            $mix = self::mix($a, $b, $c);
            $a = $mix[0]; $b = $mix[1]; $c = $mix[2];
            $k += 12;
            $len -= 12;
        }
        $c += $length;
        switch($len) {
            case 11: $c += ($url[$k + 10] << 24);
            case 10: $c += ($url[$k + 9] << 16);
            case 9 : $c += ($url[$k + 8] << 8);
            /* the first byte of c is reserved for the length */
            case 8 : $b += ($url[$k + 7] << 24);
            case 7 : $b += ($url[$k + 6] << 16);
            case 6 : $b+=($url[$k+5]<<8);
            case 5 : $b+=($url[$k+4]);
            case 4 : $a+=($url[$k+3]<<24);
            case 3 : $a+=($url[$k+2]<<16);
            case 2 : $a+=($url[$k+1]<<8);
            case 1 : $a+=($url[$k+0]);
            /* case 0: nothing left to add */
        }
        $mix = self::mix($a,$b,$c);
        return $mix[2];
    }

    public static function zeroFill($a, $b)
    {
        $z = hexdec(80000000);
        if ($z & $a) {
            $a = ($a>>1);
            $a &= (~$z);
            $a |= 0x40000000;
            $a = ($a>>($b-1));
        } else {
            $a = ($a>>$b);
        }
        return $a;
    }

    public static function mix($a,$b,$c) {
        $a -= $b; $a -= $c; $a ^= (self::zeroFill($c,13));
        $b -= $c; $b -= $a; $b ^= ($a<<8);
        $c -= $a; $c -= $b; $c ^= (self::zeroFill($b,13));
        $a -= $b; $a -= $c; $a ^= (self::zeroFill($c,12));
        $b -= $c; $b -= $a; $b ^= ($a<<16);
        $c -= $a; $c -= $b; $c ^= (self::zeroFill($b,5));
        $a -= $b; $a -= $c; $a ^= (self::zeroFill($c,3));
        $b -= $c; $b -= $a; $b ^= ($a<<10);
        $c -= $a; $c -= $b; $c ^= (self::zeroFill($b,15));

        return array($a,$b,$c);
    }

    public static function strord($string) {
        for($i=0;$i<strlen($string);$i++) {
            $result[$i] = ord($string{$i});
        }
        return $result;
    }
}
?>

Пример использования,

require_once "googlePageRank.php";

function getPR ($url) {

    preg_match(
        '|Rank_(\d*):(\d*):(\d*)|i',
        googlePageRank::get($url),
        $PR
    );

    return $PR[3];
}

echo getPR(URL);

Где URL - это ваш домен для проверки.

Вычисление ТиЦ

А теперь вычислим Яндекс ТиЦ, для этого введем URL (ваш домен).

function getTCY ($url) {

    preg_match(
        '|<tcy\s+rang=["\']?(\d*)["\']?\s+value=["\']?(\d*)["\']?\s?/>|i',
        file_get_contents('http://bar-navig.yandex.ru/u?ver=2&url='.urlencode($url).'&show=1'),
        $TCY
    );

    return $TCY[2];
}

echo getTCY(URL);

Ну вот и все, есть вопросы? Добро пожаловать в камменты!
Мой ответ на Кратенько о том, как узнавать PR и CY

Комментарии

блин скока раз те говорить чтоб ты смотрел что публикуешь... << поправь в коде

Да смотрю я по 100 раз пока опубликую, не поправляется... Уже 3 раза обновлял, пойду искать где он там преобразовывает... :(

Решил с помощью опции “WordPress должен исправлять некорректный XHTML-код автоматически”, которая находится в Параметры -> Написание!

Теперь не преобразует :)

я б ваще отключил их парсер он тока мешает

Я отключил рич-едитор и эту опцию, фактически отключил весь "парсер" :)

а как его отключить?

Тут все я описал вчера... http://adw0rd.ru/2009/blog-refactoring/

ps. в конце поста

у тебя тиц и пр перепутаны местами

тут http://seo.adw0rd.ru/

Ничего не перепутано

>
Рейтинг в поисковых системах
Яндекс Ранг/ТиЦ 2/20
Google PR 3

хм а мне показал ПР = 0... у меня 2

Хотя для твоего домена, именно так как ты и говоришь... Странно, так то у тебя PR2

Может просто твой PR не может определить, а ТиЦ у тебя какой?

а я не знаю как проверить, мне впринципе на него пофиг всегда было

http://search.yaca.yandex.ru/yca/cy/ch/mabp.kiev.ua
Так что просто глючит PR

Достойный ответ! =)
Надо загнаться и "ответ на ответ" сделать =)

Ждать версию на C#? Смотри в рекурсию не войди :D

А как вы определяете html-форматирование?

http://pyha.ru/forum/topic/2136.msg37849#msg37849
и плюс <strong> сколько то там... потом распишу в самом сервисе...

интересная идея. а если бы еще там отступы, закрытые, открытые, классы, стоп - это уже валидатор.

"Оценка оптимизации" - это среднее значение всех параметров?

Fatal error: Class 'seoTools' not found

Да упокоится он с миром!

Оставьте свой комментарий

Markdown