Определения позиций сайта в яндексе
Категория: Php | Автор: admins | (3 февраля 2017)
 

Определения позиций сайта в яндексе


Цитата:
Для того чтобы пользоваться сервисом, IP должен быть занесен в базу http://xml.yandex.ru/ip.xml и есть ограничение на 1000 запросов в сутки для каждого IP. Пользоваться сервисом могут только зарегистрированные в яндексе пользователи.
<?
//скрипт для определения позиций сайта в яндексе.

$keywords = file('words.txt'); //файл с ключевыми словами
$site ='websr.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;

// мы должны получить место сервера в выдаче по некому запросу.
// делаем запрос по десять ссылок на страницу и запрашиваем 20
// страниц. при нахождении сервера останавливаемся и выдаем его
// место в выдаче
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('https://yandex.ru/search/xml', 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 />';
}

?>






 (Голосов: 0)

 



Была ли полезной Вам статья?
Да Нет

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

У нас искали: