Yvision.kz
kk
Разное
Разное
399 773 постов42 подписчика
Всяко-разно
0
15:26, 16 июня 2008

Определяем ТИЦ парсингом

До недавнего времени для определения ТИЦ парсил страницу bar-navig.yandex.ru. Но теперь данный адрес отказывается выдавать информацию о сайтах не присутствующих в Яндекс.Каталоге. Даже не знаю как это объяснить, наверное снова их заморочки.
Как известно есть еще один адресок который дай бог выдает такую инфу. Вот собственно и он search.yaca.yandex.ru. Правда первый был более удобнее, так как выдавал только лиш цифры и информацию о том в какой категории находитса тот или иной сайт, что в свою очередь довольно сильно облегчает парсинг и снижает нагрузку и ненужный трафик.
Но куда в наше время деваться? Будем парсить что есть. В этом посте хочу привести очень полезную функцию для определение ТИЦа. А вы уже сами решите куда её использовать :)
Собственно она:

  1. function yandex($url){
  2. global $set;
  3. $file=file_get_contents("http://search.yaca.yandex.ru/yca/cy/ch/$url/");
  4. $file=iconv("UTF-8", "windows-1251", $file);
  5. ///echo $file;
  6. //Определение ТИЦ
  7. $tica=preg_match("!ресурса меньше (.*?).!si",$file,$ok);
  8. $tic=$ok[1];
  9. if (trim($tic)=='10') $tic='0';
  10. if ( trim($tic)!='0' )
  11. {
  12. $tica=preg_match("!ресурса — (.*?)!si",$file,$ok);
  13. $tic=$ok[1];
  14. }
  15. if ( trim($tic)=='' )
  16. {
  17. $file=file_get_contents("http://bar-navig.yandex.ru/u?ver=2&show=32&url=http://$url");
  18. //Определение ТИЦ
  19. $tica=preg_match("!value=\"(.*?)\"!si",$file,$ok);
  20. $tic=$ok[1];
  21. }
  22. return $tic;
  23. }

Расскажу по порядку. Во первых парсим мы нужный адресок, и обязательно меняем кодировку. Возможно на вашем сервере этого не понадобитса, но если не будет определятся, убираем коммент echo $file; для отладки. Видем каракули? Убираем функцию iconv : )
Первое что мы проверяем, есть ли вообще ТИЦ у проекта. Далее ветвление определяем, стоит ли узнавать точное значение, если переменная равна 0 то не стоит : ) Ну и если первым способом определить не выходит, используем второй.
Вот и все. Конечно функция довольно грузанутая, но результат стоит этого.

0
330
0