Позиции сайта в поисковике по списку запросов на php (Yandex.ru)


Если у вас появилась необходимость автоматизировать получение статистики позиций сайта в поисковике на PHP, то вот самый удачный вариант скрипта, который перебирает выдачу yandex по определённым запросам, записанных в текстовом файле, и показывает позицию сайта в выдаче.

Он вам покажет на какой позиции находится сайт по определённому запросу.

Список запросов неограничен, но стоит помнить что размер списка влияет на время работы скрипта.

Благодаря данному скрипту, вы можете создать свой сервис на PHP для получения полной статистики о позициях сайта в поисковой выдаче.

<?
$keywords = file('words.txt'); //файл с ключевыми словами
$site ='lavrik-v.ru';
 
header ("Content-Type: text/html;charset=utf-8");
foreach($keywords as $word)
    showPlaseYandex($site, $word);
     
     
function showPlaseYandex($host, $query)
{
$host = preg_replace("[^http://|www\.]", '', $host);
$query_esc = htmlspecialchars($query);
$host_esc  = htmlspecialchars($host);
$page  = 0;
$found = 0;
$pages = 20;
$error = false;
$exit = false;
 
 
while (!$exit && $page < $pages && $host)
{
    // XML запрос
    $doc = <<<DOC
<?xml version='1.0' encoding='utf-8'?>
<request>
    <query>$query_esc</query>
    <page>$page</page>
    <maxpassages>0</maxpassages>
    <groupings>
        <groupby attr='d' mode='deep' groups-on-page='10' docs-in-group='1' curcateg='-1'/>
    </groupings>
</request>
DOC;
    $context = stream_context_create(array(
        'http' => array(
            'method'=>"POST",
            'header'=>"Content-type: application/xml\r\n" .
                      "Content-length: " . strlen($doc),
            'content'=>$doc
        )
    ));
    

    $response = file_get_contents('http://xmlsearch.yandex.ru/xmlsearch?user=valery-lavrik&key=03.206993170:7c6a768548feec1d32768bc47576c8bd', true, $context);
    if ( $response ) {
        $xmldoc = new SimpleXMLElement($response);
        $xmlresponce = $xmldoc->response;
        if ($xmlresponce->error) {
            print "Возникла следующая ошибка: " . $xmlresponce->error . "<br/>\n";
            $exit  = 1;
            $error = true;
            break;
        }    
        $pos = 1;
        $nodes = $xmldoc->xpath('/yandexsearch/response/results/grouping/group/doc/url');
        foreach ($nodes as $node) {
            // если URL начинается с имени хоста, выходим из цикла
            if ( preg_match('/^http:\/\/(www\.)?'.$host.'/ui', $node) ) {
                $found = $pos + $page * 10;
                $exit = 1;
                break;
            }
         
            $pos++;
        }
        $page++;
    } else {
        print "внутренняя ошибка сервера\n";
        $exit = 1;
    }
}
if (!$error) {
 
    if ($found) {
        $found = colorate($found);
        print "<p>сайт «$host » находится на месте № $found по запросу «$query »</p>";
    } elseif ($host) {
        print "<p>сайт «$host » находится далее, чем на ". $pages*10 ." месте в выдаче «Яндекса»";
        print" по запросу «$query »</p>\n";
    } 
}
}
 
function colorate($int)
{
    $color = '#FF0000';  //красный
    if($int<=10)
        $color = '#008E00'; //зеленый
    if($int>10  && $int<=20)
        $color = '#FFE500'; //желтый
    return '<span style="color: ' . $color . '">' . $int . '</span><br />';
}

Теперь сохраняем интересующие запросы в файл words.txt и запускаем скрипт. В результате получаем список ссылок с номером позиции напротив.

Это очень удобно для создания системы сбора информации о сайте, о его позициях, и тенденциях роста или падения.

Если вас интересует аналогичный скрипт, но для гугла, то вам сюда.

P.S. Скрипт перенят с blog.phpdreamer.ru.

 


Тэги:

Комментарии: 1

Прокомментировать »

 
 
Топвизор
25.10.2013
 

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

 

Прокомментировать

 
 
Сообщение *
 
Проверочный код *
 
 
 
Яндекс.Метрика