PHP

Определение Яндекс Тиц и присутствие в Яндекс каталоге

Приведено два варианта определения ТИЦ. Первая функция getTCY работает по принципу Yandex.Bar. Вторая, yandex_tic, делает запрос к яндекс каталогу и разбирает получившуюся страницу. Она была написана, на основе анализа кода выдаваемого Яндексом.
Определение ТИЦ с помощью запроса Yandex-Bar
<?php
$content = file_get_contents('http://bar-navig.yandex.ru/u?ver=2&show=32&url='.$url.");
preg_match("/value=\"(.\d*)\"/", $content, $match);
$cy=$match[1];
?>

Еще один вариант с использованием fopen для URL:
<?php
function getBarCY($_url) {
  $_uri = "http://bar-navig.yandex.ru/u?ver=2&url=".urlencode("http://".$_url)."&show=1";
  $fd = @fopen($_uri, "r");
  if ($fd) {
    while ($buffer = fgets($fd, 4096)) $haystack.=$buffer;
    fclose($fd);
    preg_match("/<tcy rang=\"(.*)\" value=\"(.*)\"\/>/isU",
      $haystack,$cy);
    return (int) $cy[2];
  } else return 0;
}

// Пример:
// echo getBarCY("htmlweb.ru");
?>

Определение ТИЦ с помощью разбора страницы search.yaca.yandex.ru

Если рессурс не описан в каталоге ищется следующая последовательность:
<p><www.htmlweb.ru>: ресурс не описан в Яндекс.Каталоге</p>
<p class="errmsg">
<b>Индекс цитирования (тИЦ) ресурса — 200</b>

Если описан, код, выдаваемый Яндексом будет следующий:
<tr valign="top">
<td class="current" valign="middle"><img border="0" height="25" width="28" alt="" src="http://img.yandex.net/i/arr-hilite.gif"></td>
<td align="right" valign="middle" width="20">63.</td>
<td width="*" valign="middle">
<a href="http://www.gorod.ru/">"Город-инфо" - веб-интеграция и автоматизация</a>
<div>Управленческий консалтинг, разработка ERP-систем, программная интеграция, веб-консалтинг и дизайн. Описание продуктов. Публикации. Контакты.</div>
</td>
<td align="right">850</td>
</tr>
...

<b>Перейти на страницу</b> <a href="http://yaca.yandex.ru/yca/tungrp/cat/Computers/Internet/Web_Development/Design/3.html">каталога</a>


Проанализировав код ответа Яндекса напишем следующий парсер:
<?php
function getTCY($url)  
{  
  //считываем XML-файл с данными  
  $xml = file_get_contents('http://bar-navig.yandex.ru/u?ver=2&show=32&url='.$url);  
  
  //если XML файл прочитан, то возвращаем значение параметра value  
  //иначе возвращаем false - ошибка  
  return $xml ? (int) substr(strstr($xml, 'value="'), 7) : false;  
}  
  

function yandex_tic($url){  
  $file=file_get_contents("http://search.yaca.yandex.ru/yca/cy/ch/$url/");  
  if(preg_match("!-\s+([0-9]{0,8})<\/b>!is",$file,$ok)){  
        // сайт не в каталоге.  
            $str=$ok[1];  
        }  
  else if(preg_match("!<td class=\"current\" valign=\"middle\">(.*?)</td>\n</tr>!si", $file, $ok)){  
        if(preg_match("!<td align=\"right\">(.*?)</td>\n</tr>!si", $ok[0], $str)){  
        // сайт в каталоге.  
                    $str=$str[1];  
                } else {  
                    $str=0;  
                }  
        }  
        else {  
            $str=0;  
        }  
  
return trim($str);  
}   

//пример использования  
echo 'ТИЦ:'.getTCY('http://www.htmlweb.ru').'<br>';
echo 'Я: '.yandex_tic("www.htmlweb.ru").'<br>';
?>

http://www.htmlweb.ru ТИЦ:200 Я: не в каталоге! http://www.gorod.ru ТИЦ:800 Я: в каталоге!

Развивая эту идею, вы можете получать со страниц Яндекса любые параметры. Но учтите, если поставите на "поток" - Яндекс вас забанит по IP.
Еще один вариант получения ТИЦ парсингом:
<?php
function yandex($url){
global $set;

$file=file_get_contents("http://search.yaca.yandex.ru/yca/cy/ch/$url/");
$file=iconv("UTF-8", "windows-1251", $file);
///echo $file;
//Определение ТИЦ
$tica=preg_match("!ресурса меньше (.*?).!si",$file,$ok);
$tic=$ok[1];
if (trim($tic)=='10') $tic='0';
if ( trim($tic)!='0' ) {
    $tica=preg_match("!ресурса - (.*?)!si",$file,$ok);
    $tic=$ok[1];
    }
if ( trim($tic)=='' ){
    $file=file_get_contents("http://bar-navig.yandex.ru/u?ver=2&show=32&url=http://$url");
        //Определение ТИЦ
        $tica=preg_match("!value=\"(.*?)\"!si",$file,$ok);
        $tic=$ok[1];
        }
return $tic;
}
?>

Во первых парсим мы нужный адрес, и меняем кодировку. Первое что мы проверяем, есть ли вообще ТИЦ у домена. Далее определяем, стоит ли узнавать точное значение, если переменная равна 0 то не стоит. Ну и если первым способом определить не выходит, используем второй.
Добавлено: 21 Августа 2013 10:24:26 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...