Войти через VK Войти через FB Войти через Google Войти через Яндекс
Поиск по сайту
Определение Яндекс Тиц и присутствие в Яндекс каталоге
Приведено два варианта определения ТИЦ. Первая функция getTCY работает по принципу Yandex.Bar. Вторая, yandex_tic, делает запрос к яндекс каталогу и разбирает получившуюся страницу. Она была написана, на основе анализа кода выдаваемого Яндексом.
Определение ТИЦ с помощью запроса Yandex-Bar
$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:
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>
Проанализировав код ответа Яндекса, напишем следующий парсер:
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>';
Развивая эту идею, вы можете получать со страниц Яндекса любые параметры. Но учтите, если поставите на "поток" - Яндекс вас забанит по IP.
Еще один вариант получения ТИЦ парсингом:
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, то не стоит. Ну, и если первым способом определить не выходит, используем второй.
.
Прокомментировать/Отблагодарить