Число страниц в индексе Яндекса (через XML):
Для проведения запросов нужно зарегистрироваться в xml.yandex.ru, добавить IP-адрес, с которого будет производится запрос, и подтвердить свой телефон. Тогда вы сможете делать 1000 запросов в сутки. Не забудьте сменить в настройках адрес запроса на свой уникальный. Так же, от себя, могу заметить, что точность немного страдает - показываются все страницы, проиндексированные яндексом, а не те, что учитываются в поиске, для некоторых сайтов данные могут отличатся на порядок.
<?
function yandex_pages_xml($url){
$res = 0;
$url=str_replace("www.","",$url);
$wurl="www.".$url;
$query = <<<XML
<?xml version="1.0" encoding="UTF-8"?>
<request>
<query>site:$url | site:$wurl</query>
<groupings>
<groupby attr="d" mode="deep" groups-on-page="10" docs-in-group="1" />
</groupings>
</request>
XML;
//Адрес для совершения запроса, смотрите в настройках xml.yandex.ru
$xmlurl="http://xmlsearch.yandex.ru/xmlsearch?user=User&key=bla-bla-bla";
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,$xmlurl);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);
curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,60);
curl_setopt($curl,CURLOPT_HEADER,false);
curl_setopt($curl,CURLOPT_ENCODING,"gzip,deflate");
curl_setopt($curl,CURLOPT_POST,true);
curl_setopt($curl,CURLOPT_POSTFIELDS,$query);
$str = curl_exec($curl);
curl_close($curl);
preg_match('/<doccount>(.+?)</doccount>/',$str,$a);
$res = !empty($a[1]) ? $a[1] : 0;
return $res;
}
?>
