Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Скрипт проверки позиций сайта 
:(
    Опции темы
Satell
Дата 2.1.2008, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 28.6.2007

Репутация: нет
Всего: нет



в яндексе и гугле, для яндекса нашел на перле для работы через xml.yandex.ru с ограничением 1000 запросов
а вообще нужна такая прога, в которую можно вбить сотни ключевиков и она будет их ослеживать каждый день
подарите плиз или поменяюсь, есть самописная пакетная проверка на непот

PM MAIL   Вверх
Georgio
Дата 2.1.2008, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 446
Регистрация: 21.2.2007
Где: Москва

Репутация: 2
Всего: 5



О, тута на форуме этого добра навалом.

http://forum.vingrad.ru/forum/topic-144565.html
PM MAIL WWW ICQ Skype   Вверх
Satell
Дата 2.1.2008, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 28.6.2007

Репутация: нет
Всего: нет



нужен исходник
PM MAIL   Вверх
Str!pe
Дата 2.1.2008, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


профиль удален
****


Профиль
Группа: Участник
Сообщений: 2426
Регистрация: 12.6.2005
Где: На земле.

Репутация: 17
Всего: 152



Satell, Нема к сожелению... может через пару дней чтонибудь подкину, а пока нет.


--------------------
Со мной можно связаться по скайпу или по аське.
Занимаюсь продвижением сайтов - самой таргетированной рекламой.
PM MAIL ICQ Skype   Вверх
Str!pe
Дата 3.1.2008, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


профиль удален
****


Профиль
Группа: Участник
Сообщений: 2426
Регистрация: 12.6.2005
Где: На земле.

Репутация: 17
Всего: 152



Вот, как и обещал. ТО что осталось. Лежало в паблике на каком-то форуме. Сохраняю ссылки на автора, убил описание, тут итак все понятно будет. Это ПХП файлик.
Код

<?php
//////////////////////////////////////////////////////////
//--- Система мониторинга сайта в поисковых системах ---//
//------------------------------------------------------//
//----------- CopyRight (c) 2006--2007 -----------------//
// Яровой Роман Павлович aka ЯR <[email protected]> //
// Первоначальная версия от                             //
// IT-студии SoftTime <[email protected]>            //
//////////////////////////////////////////////////////////


// отключим вывод ошибок
@error_reporting(0);
// Из суперглобального массива $_POST[]
// получаем значения переменных переданных из формы
if (empty($_POST['site'])) $_POST['site'] = $_SERVER['SERVER_NAME'];
$server = $_POST['server'];
$site = $_POST['site'];
$site = str_replace('/', '\/', $site);
$phrase = $_POST['phrase'];
// Определение констант, соответствующих поисковым системам
define('YANDEX', 1);  // Яndex
define('RAMBLER', 2); // Rambler
define('APORT', 3);   // Апорт
define('GOOGLE', 4);  // Google
define('MAIL', 5);    // Поиск@Mail.ru
define('MSN', 6);     // MSN Live Search
define('YAHOO', 7);   // Yahoo!
// Форма ввода параметров мониторинга
?>
  <form  method="post">
  <p>
    <select name="server">
      <option value=<?php print YANDEX; ?> 
         <? if($server==YANDEX) print " selected"; ?>>Яndex</option>
      <option value=<?php print RAMBLER; ?> 
         <? if($server==RAMBLER) print " selected"; ?>>Rambler</option>
      <option value=<?php print APORT; ?> 
         <? if($server==APORT) print " selected"; ?>>Aport</option>
      <option value=<?php print GOOGLE; ?> 
         <? if($server==GOOGLE) print " selected"; ?>>Google</option>
      <option value=<?php print MAIL; ?> 
         <? if($server==MAIL) print " selected"; ?>>@MAIL.RU</option>
      <option value=<?php print MSN; ?> 
         <? if($server==MSN) print " selected"; ?>>MSN</option>
      <option value=<?php print YAHOO; ?> 
         <? if($server==YAHOO) print " selected"; ?>>Yahoo!</option>
    </select>
   </p>
   <p>
    Сайт: &nbsp; <input type="text" name="site" size="40" maxlength="256"
            value='<? print $site ?>'>
   </p>
   <p>
    Фраза: <input type="text" name="phrase" size="40" maxlength="256"
            value='<? print $phrase ?>'>
   </p>
   <p>
    <input type="submit" value="Искать">
   </p>
  </form>
<?
// Если все поля в форме заполнены, то вызывается функция
// siteposition() для проведения мониторинга
if (($server!="") && ($phrase!="") && ($site!=""))
{
    siteposition($server, $site, $phrase);
}

function siteposition($server, $site, $phrase)
{
    // numberpage — переменная определяющая номер просматриваемой страницы
    $numberpage = 0;
    // Присваиваем переменным phrase, total и numberpage значения,
    // определяемые индивидуально для каждой поисковой системы.
    // phrase — поисковая фраза
    // total — переменная, определяющая максимальное число страниц
    // по которым будет произведен поиск. Для разных поисковых систем
    // оно разное и подобрано таким образом, чтобы число просматриваемых
    // страниц составило 10 штук.
    switch($server)
    {
        case YANDEX:
            // Обрезка пробелов в начале и конце поисковой фразы
            $phrase = trim($phrase);
            // URL-кодирование поисковой фразы
            // неалфавитно-числовые символы заменяются
            // на знак % и соответствующую 16-ричную последовательность
            $phrase = rawurlencode($phrase);
            // 16-ричный знак пробела, появившийся после применения
            // функции rawurlencode() заменяется на знак +
            $endstr = str_replace("%20", "+", $phrase);
            $total = 10;
            $numberpage = -1;
            break;
        case APORT:
            $phrase = trim($phrase);
            $phrase = rawurlencode($phrase);
            $endstr = str_replace("%20", "+", $phrase);
            $total = 10;
            $numberpage = -1;
            break;
        case RAMBLER:
            $phrase = trim($phrase);
            $phrase = rawurlencode($phrase);
            $endstr = str_replace("%20", "+", $phrase);
            $total = 152;
            $numberpage = -14;
            break;
        case GOOGLE:
            $phrase = trim($phrase);
            $phrase = rawurlencode($phrase);
            $endstr = str_replace("%20", "+", $phrase);
            $total = 100;
            $numberpage = - 10;
            break;
        case MAIL:
            $phrase = trim($phrase);
            $phrase = rawurlencode($phrase);
            $endstr = str_replace("%20", "+", $phrase);
            $total = 100;
            $numberpage = - 10;
            break;
        case MSN:
            $phrase = iconv('cp1251', 'UTF-8', trim($phrase)); //mb_convert_encoding(trim($phrase), 'UTF-8', 'cp1251');
            $phrase = rawurlencode($phrase);
            $endstr = str_replace("%20", "+", $phrase);
            $total = 10;
            $numberpage = - 1;
            break;
        case YAHOO:
            $phrase = iconv('cp1251', 'UTF-8', trim($phrase)); //mb_convert_encoding(trim($phrase), 'UTF-8', 'cp1251');
            $phrase = rawurlencode($phrase);
            $endstr = str_replace("%20", "+", $phrase);
            $total = 91;
            $numberpage = - 9;
            break;
    }
    // Последовательно просматриваем страницы поисковых систем до тех
    // пор пока не будет найдена ссылка на искомый сайт в тексте страницы
    // (count($arr[0]) == 0) или число просмотренных страниц не достигнет
    // максимального значения ($numberpage < $total)
    while ((count($arr[0]) == 0) && ($numberpage < $total))
    {
        switch($server)
        {
            // Увеличивая значение переменной $numberpage, определяется
            // текущая просматриваемая страницу с результатами поиска
            // в поисковой системе.
            // Число приращения зависит от конкретной поисковой системы
            case YANDEX:
                $numberpage += 1;
                break;
            case APORT:
                $numberpage += 1;
                break;
            case RAMBLER:
                $numberpage += 15;
                break;
            case GOOGLE:
                $numberpage += 10;
                break;
            case MAIL:
                $numberpage += 10;
                break;
            case MSN:
                $numberpage += 1;
                break;
            case YAHOO:
                $numberpage += 10;
                break;
        }
        // Вызывается функцию geturl(), генерирующую строку запроса
        // для поисковой системы. Передаваемые параметры:
        // numberpage – переменная, определяющая номер просматриваемой
        // страницы с результатами поиска в поисковой системе
        // endstr — поисковая фраза после кодирования для применения
        // в строке запроса
        // server — имя поисковой системы
        $strurl = geturl($numberpage,$endstr,$server);
        // В переменную text заносится содержимое страницы поисковой системы,
        // которое возвращается функцией openpage()
        $text = openpage($strurl);
        // Поиск ссылки на сайт в тексте страницы поисковой системы
        // с помощью функции findsite(). Результаты поиска заносятся
        // в массив arr[].
        $arr = findsite($site, $text);
    }
    // Если число элементов массива arr[] больше нуля — значит ссылка
    // на искомый сайт была найдена в тексте просмотренной страницы
    // поисковой системы и необходимо показать результаты мониторинга.
    if (count($arr[0]) > 0){
        switch($server)
        {
            // В зависимости от поисковой системы формируются результаты
            // мониторинга поисковой системы.
            // Функция pattern() возвращает результаты параметры для
            // регулярного выражения, с помощью которого будет производится
            // поиск номера позиции сайта сайта в тексте
            // страницы поисковой системы.
            // Функция findposition() возвращает номер позиции сайта
            case YANDEX:
                // Вывод информации о странице
                print "Ссылка на сайт найдена на странице: ".
                ($numberpage+1)."<br>";
                print "Перейти по ссылке: <a href='$strurl' target='_blank'>Яndex</a><br>";
                // Определение и вывод позиции запроса
                list($startpattern, $endpattern) = pattern(YANDEX);
                print "<br>Позиция: ".
                findposition($server, $site, $text, $startpattern, $endpattern);
                break;
            case APORT:
                // Вывод информации о странице
                print "Ссылка на сайт найдена на странице: ".
                ($numberpage+1)."<br>";
                print "Перейти по ссылке: <a href='$strurl' target='_blank'>Апорт</a><br>";
                // Определение и вывод позиции запроса
                list($startpattern, $endpattern) = pattern(APORT);
                print "<br>Позиция: ".
                findposition($server, $site, $text, $startpattern, $endpattern);
                break;
            case RAMBLER:
                // Вычисляем страницу, на которой находится запрашиваемый сайт
                $numberpage = $numberpage/15;
                $numberpage = (int)$numberpage;
                if($numberpage % 15 == 0 && $numberpage>15) $numberpage++;
                print "Ссылка на сайт найдена на странице: ".($numberpage+1)."<br>";
                // Выводим ссылку на страницу
                print "Перейти по ссылке: <a href='$strurl' target='_blank'>Рамблер</a><br>";
                // Определение и вывод позиции запроса
                list($startpattern, $endpattern) = pattern(RAMBLER);
                print "<br>Позиция: ".findposition($server, $site, $text,
                $startpattern, $endpattern);
                // Так как ссылка на искомый сайт найдена,  то просмотр страниц
                // поисковых систем в цикле While можно прекратить
                break;
            case GOOGLE:
                // Вывод информации о странице
                print "Ссылка на сайт найдена на странице: ".
                ($numberpage/10 + 1)."<br>";
                print "Перейти по ссылке: <a href='$strurl' target='_blank'>Google</a><br>";
                // Определение и вывод позиции запроса
                list($startpattern, $endpattern) = pattern(GOOGLE);
                $pos = findposition($server, $site, $text, $startpattern, $endpattern);
                print "<br>Позиция: ".($numberpage + $pos);
                break;
            case MAIL:
                // Вывод информации о странице
                print "Ссылка на сайт найдена на странице: ".
                ($numberpage/10 + 1)."<br>";
                print "Перейти по ссылке: <a href='$strurl' target='_blank'>Поиск@MAIL.RU</a><br>";
                // Определение и вывод позиции запроса
                list($startpattern, $endpattern) = pattern(MAIL);
                print "<br>Позиция: ".
                findposition($server, $site, $text, $startpattern, $endpattern);
                break;
            case MSN:
                // Вывод информации о странице
                print "Ссылка на сайт найдена на странице: ".
                ($numberpage+1)."<br>";
                print "Перейти по ссылке: <a href='$strurl' target='_blank'>MSN Live Search</a><br>";
                // Определение и вывод позиции запроса
                list($startpattern, $endpattern) = pattern(MSN);
                $pos = findposition($server, $site, $text, $startpattern, $endpattern);
                print "<br>Позиция: ".(($numberpage*10)+$pos);
                break;
            case YAHOO:
                // Вывод информации о странице
                print "Ссылка на сайт найдена на странице: ".
                (($numberpage-1)/10 + 1)."<br>";
                print "Перейти по ссылке: <a href='$strurl' target='_blank'>Yahoo!</a><br>";
                // Определение и вывод позиции запроса
                list($startpattern, $endpattern) = pattern(YAHOO);
                print "<br>Позиция: ".
                findposition($server, $site, $text, $startpattern, $endpattern);
                break;
        }
    }
    else
    {
        print "На 10 первых страницах ссылка на сайт отсутствует";
    }
}

function geturl($numberpage, $endstr, $server)
{
    switch ($server){
        case YANDEX:
            return "http://www.yandex.ru/yandpage?q=444967640&p=$numberpage&stype=&nl=0&text=$endstr";
        case RAMBLER:
            return "http://www.rambler.ru/srch?oe=1251&words={$endstr}&start=".$numberpage;
        case APORT:
            return "http://sm.aport.ru/scripts/template.dll?r={$endstr}&That=std&p={$numberpage}&HID=1_2_3_4_5_6_7_8_9_10_11_12_13_14_15_16_17_18_19_20";
        case GOOGLE:
            return "http://www.google.ru/search?q={$endstr}&hl=ru&lr=&start={$numberpage}&sa=N";
        case MAIL:
            return "http://go.mail.ru/search?&q={$endstr}&no_morph=n&num=10&sf={$numberpage}";
        case MSN:
            return "http://search.msn.com/results.aspx?q={$endstr}&first={$numberpage}1&FORM=PDRE{$numberpage}";
        case YAHOO:
            return "http://search.yahoo.com/search?p={$endstr}&toggle=1&ei=UTF-8&fr=FP-tab-web-t400&b={$numberpage}";
        default:
            return "";
    }
}


function openpage($link)
{
    $link = parse_url($link);
    $link['port'] = (empty($link['port'])) ? '80' : $link['port'];
    $fp = fsockopen($link['host'], $link['port'], $sock_errno, $sock_errstr, 30);
    if (!$fp) {
        print "$sock_errstr ($sock_errno)<br>\n";
    } else {
        $out  = "GET {$link['path']}?{$link['query']} HTTP/1.1\r\n";
        $out .= "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*\r\n";
//        $out .= "User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows 98; DigExt)\r\n"; // маскировка под IE 5.5
        $out .= "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 2.0.40607; .NET CLR 1.0.3705; IEMB3; IEMB3)\r\n"; // маскировка под IE 6
        $out .= "Host: {$link['host']}\r\n";
        $out .= "Connection: Close\r\n\r\n";


        fwrite($fp, $out);
        $text = '';
        while (!feof($fp)) {
            $text .= fgets($fp, 1024);
        }
        fclose($fp);
    }
    return ($text);
}

function findsite($site, $text)
{
    preg_match_all("/$site/i", $text, $arr);
    return $arr;
}
function pattern($typepattern)
{
    switch($typepattern)
    {
        case YANDEX:
            return array("<li value=(?P<position>\d*)>\s*<div[^>]*>\s*<a[^>]*href=\"[^\"]*", "[^\"]*\"[^>]*>\s*<img\s*");
            break;
        case APORT:
            return array("<li value=(?P<position>\d*)>(\s*)<span([^>]*)>(\s*)<a([^>]*)href=\"([^\"]*)", "([^\"]*)\"([^>]*)>");
            break;
        case RAMBLER:
            return array("<li><div class=\"ttl\"><a([^>]*)href=\"([^\"]*)", "([^\"]*)\"");
            break;
        case GOOGLE:
            return array("href=\"([^\"]*)", "([^\"]*)\"");
            break;
        case MAIL:
            return array("<tr>\s*<td[^>]*class=num>(?P<position>\d*)\.<\/td>\s*<td>\s*<p>\s*<a[^>]*href=\"[^\"]*", "[^\"]*\"");
            break;
        case MSN:
            return array("<li[^>]*><h3><a href=\"[^\"]*", "[^\"]*\"[^>]*>");
            break;
        case YAHOO:
            return array("<em class=yschurl>([^<>]*)", "(.*)<\/em>");
            break;
    }
}

// Функция findposition() определяет позицию искомого сайта на странице
// c результатами поиска в поисковой системе.
// Передаваемые параметры:
// server — имя поисковой системы
// site — имя искомого сайта
// text — содержимое страницы c результатами поиска в поисковой системе
// startpattern и endpattern — параметры для регулярного выражения, они
// определяются функцией pattern().
function findposition($server, $site, $text, $startpattern, $endpattern)
{
    switch($server)
    {
        // Поиск позиции сайта в тексте страницы.
        // Для каждой поисковой системы применяется свой алгоритм поиска
        case YANDEX:
            // Регулярное выражение, осуществляющее поиск позиции сайта
            preg_match("/$startpattern$site$endpattern/isU", $text, $arr);
            return $arr['position'];
        case APORT:
            preg_match("/$startpattern$site$endpattern/isU", $text, $arr);
            return $arr['position'];
        case RAMBLER:
            preg_match('/<ol start="(\d*)">/isU', $text, $arr);
            $pos_begin = $arr[1];
            $text = substr($text, strpos($text, '<ol start='));
            // Находим текст относящийся к сайту и вырезаем его
            for($i=0; $i<20; $i++)
            {
                $pos = strpos($text,"<li>");
                $posend = strpos($text, "<li>", ($pos+15));
                if(preg_match("/$startpattern$site$endpattern/isU", substr($text,$pos,($posend-$pos)))) return $pos_begin;
                else $text = substr($text, $posend-1);
                $pos_begin++;
            }
            return 'Не определена';
        case GOOGLE:
            $pos_begin = 1;
            // Находим текст относящийся к сайту и вырезаем его
            for($i = 0; $i < 10; $i++){
                $pos = strpos($text,"<div class=g><h2 class=r");
                $posend = strpos($text, "<div class=g><h2 class=r", ($pos+25));
                if(preg_match("/$startpattern$site$endpattern/isU", substr($text,$pos,($posend-$pos)))) return $pos_begin;
                else $text = substr($text, $posend-1);
                $pos_begin++;
            }
            $pos = $posend;
            if(preg_match("/$startpattern$site$endpattern/isU", substr($text, $pos))) return $pos_begin;
            return 'Не определена';
        case MAIL:
            preg_match("/$startpattern$site$endpattern/isU", $text, $arr);
            return $arr['position'];
        case MSN:
            $pos_begin = 1;
            $pos = strpos($text, '<div id="results"><h2 class="hide">Results</h2><ul>');
            $posend = strpos($text, '</ul></div>', $pos + 60);
            $text = substr($text, $pos + 51, $posend - $pos - 12);
            // Находим текст относящийся к сайту и вырезаем его
            if (preg_match_all("/$startpattern.*$endpattern/isU", $text, $regs)){
                foreach ($regs[0] as $key => $value) {
                    if (preg_match("/.*$site.*/isU", $value)) return $key+1;
                }
            }else return 'Не определена';
        case YAHOO:
            preg_match('/<ol start=(\d*)>/isU', $text, $arr);
            $pos_begin = $arr[1];
            $text = substr($text, strpos($text, '<ol start='));
            // Находим текст относящийся к сайту и вырезаем его
            for($i = 0; $i < 10; $i++)
            {
                $pos = strpos($text,"<li>");
                $posend = strpos($text, "<li>", ($pos+4)) ? strpos($text, "<li>", ($pos+4)) - $pos : strlen($text);
                if(preg_match("/$startpattern$site$endpattern/iU", substr($text, $pos, $posend))) return $pos_begin;
                else $text = substr($text, $pos+$posend);
                $pos_begin++;
            }
            return 'Не определена';
        default:
            return 'Не определена';
    }
}
?>



--------------------
Со мной можно связаться по скайпу или по аське.
Занимаюсь продвижением сайтов - самой таргетированной рекламой.
PM MAIL ICQ Skype   Вверх
Satell
Дата 5.1.2008, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 28.6.2007

Репутация: нет
Всего: нет



спасибо большое, это хорошая прога
PM MAIL   Вверх
Str!pe
Дата 5.1.2008, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


профиль удален
****


Профиль
Группа: Участник
Сообщений: 2426
Регистрация: 12.6.2005
Где: На земле.

Репутация: 17
Всего: 152



Satell, Подкинешь проверку на непот?


--------------------
Со мной можно связаться по скайпу или по аське.
Занимаюсь продвижением сайтов - самой таргетированной рекламой.
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Продвижение и оптимизация сайтов | Следующая тема »


 




[ Время генерации скрипта: 0.0944 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.