EOMY.NET
на главную
EOMY.NET
Хостинг EOMY.NET: Форум поддержки
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   <b>Лотерея</b>Лотерея   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

RSS Feed

[php] Определение списка проиндексированных Яндексом страниц
На страницу 1, 2  След.
 
Начать новую тему   Ответить на тему    Список форумов EOMY.NET -> Раскрутка
[php] Определение списка проиндексированных Яндексом страниц
Автор Сообщение
lazutov
$a ||= 5;
$a ||= 5;


Зарегистрирован: 30.04.2007
Сообщения: 2089

12066 Монеты

СообщениеДобавлено: Чт, 10 Июл, 2008 16:04    Заголовок сообщения: [php] Определение списка проиндексированных Яндексом страниц Ответить с цитатой

Здравствуйте.
Для этих целей я использовал (и использую)такой скрипт:
Код:
<?

echo '<form method=post><input size="30" type="text" name="site" value=""> <input type="submit" value="OK :)">  </form>';
function rhost($rhost){
$out='';
$part='';
while(strpos($rhost,'.')!==false){
 $part=substr($rhost,0,strpos($rhost,'.'));
 $rhost=substr($rhost,1+strpos($rhost,'.'));
 $out='.'.$part.$out;
}
$out=$rhost.$out;
  return $out;
}

function pget($url){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);

curl_setopt($ch, CURLOPT_USERAGENT, "User-Agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14");
curl_setopt($ch, CURLOPT_COOKIE,"YX_SEARCHPREFS=favicons:1,lang:all,ton:1,banners:,search_form:topbot,numdoc:50,target:_blank,desc:sometimes,lr:,wstat:,t:2,family:; path=/; expires=Friday, 31-Dec-10 23:59:59 GMT; domain=.yandex.ru;") ;
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$ret=curl_exec($ch);
curl_close($ch);
return $ret;
}

function sget($site){
$flag=true;
$page=0;

$counter=0;
//echo '<textarea name="list" cols="40" rows="25">';
 while($flag===true){
 $out='';
  $res=pget('http://yandex.ru/yandsearch?p='.$page.'&pag=u&site='.$site.'&lang=ru&rd=0&text=rhost%3D%22'.rhost($site).'%22|rhost%3D%22'.rhost($site).'.*%22');
  preg_match_all('!<span style="color:#060;">(.*?)&nbsp;&middot;&nbsp;!si',$res,$urls);

  foreach ($urls[1] as $i) {
     $result[$counter]=str_replace("\n","",$i);
   $counter++;
    }

  $page++;
  if (strpos($res,'/yandsearch?p='.$page.'&pag=u')===false) {$flag=false;}

  }

return $result;
}

if (isset($_POST['site'])){
 $site=$_POST['site'];

$pages=sget($site);
sort($pages);
reset($pages);
echo "<pre>";
foreach ($pages as $i) { echo $i."\n";}
echo "</pre>";

}
  echo $page;
?>

Думаю скрипт будет полезен.
PS этот-же код только с коментариями. http://lazutov.ru/tools/ycheck/
_________________
lazutov.ru - блог, Lwhois - Удобный whois для windows | NameIntelligence -все будет... Зимой... |whois-сервис с дополнительными возможностями
Регистрация доменов RU(3 регистратора, прямые договора)-150р и дешевле Smile - в ЛС
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
zos
Хостинг — это наше всё!
Хостинг — это наше всё!


Зарегистрирован: 18.05.2007
Сообщения: 273

7611 Монеты

СообщениеДобавлено: Чт, 10 Июл, 2008 16:55    Заголовок сообщения: Ответить с цитатой

нет ли скрипта на php, который определяет позицию сайта через Яндекс.XML?
_________________
лекции,шпаргалки,методички
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
lazutov
$a ||= 5;
$a ||= 5;


Зарегистрирован: 30.04.2007
Сообщения: 2089

12066 Монеты

СообщениеДобавлено: Чт, 10 Июл, 2008 16:56    Заголовок сообщения: Ответить с цитатой

Я в xml еще не копал.
_________________
lazutov.ru - блог, Lwhois - Удобный whois для windows | NameIntelligence -все будет... Зимой... |whois-сервис с дополнительными возможностями
Регистрация доменов RU(3 регистратора, прямые договора)-150р и дешевле Smile - в ЛС
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
lazutov
$a ||= 5;
$a ||= 5;


Зарегистрирован: 30.04.2007
Сообщения: 2089

12066 Монеты

СообщениеДобавлено: Чт, 10 Июл, 2008 16:59    Заголовок сообщения: Ответить с цитатой

http://xml.yandex.ru/games/search-place.html
Там фактически-просмотр выдачи.
Можно модифицировать под это дело представленный в первом посте скрипт.
_________________
lazutov.ru - блог, Lwhois - Удобный whois для windows | NameIntelligence -все будет... Зимой... |whois-сервис с дополнительными возможностями
Регистрация доменов RU(3 регистратора, прямые договора)-150р и дешевле Smile - в ЛС
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
zos
Хостинг — это наше всё!
Хостинг — это наше всё!


Зарегистрирован: 18.05.2007
Сообщения: 273

7611 Монеты

СообщениеДобавлено: Сб, 12 Июл, 2008 17:20    Заголовок сообщения: Ответить с цитатой

глянем, спасибо.
_________________
лекции,шпаргалки,методички
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Alek$
$a ||= 5;
$a ||= 5;


Зарегистрирован: 24.11.2007
Сообщения: 820

19477 Монеты

СообщениеДобавлено: Пн, 14 Июл, 2008 05:59    Заголовок сообщения: Ответить с цитатой

Я бы чуток переписал вот этот кусок кода:
Код:
 while(true){
 $out='';
  $res=pget('http://yandex.ru/yandsearch?p='.$page.'&pag=u&site='.$site.'&lang=ru&rd=0&text=rhost%3D%22'.rhost($site).'%22|rhost%3D%22'.rhost($site).'.*%22');
  preg_match_all('!<span style="color:#060;">(.*?)&nbsp;&middot;&nbsp;!si',$res,$urls);

  foreach ($urls[1] as $i) {
     $result[$counter]=str_replace("\n","",$i);
   $counter++;
    }

  $page++;
  if (strpos($res,'/yandsearch?p='.$page.'&pag=u')===false) {break;}

  }


На мой взгляд, такой код чуток проще для восприятия Smile
_________________
Самая страшная ошибка - это ошибка без видимых причин и конкретных последствий.
phpBB3 [db_update.php generator]
phpBB3 [Russian]
Антисоциальный блог
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Веденин
$a ||= 5;
$a ||= 5;


Зарегистрирован: 17.05.2007
Сообщения: 872
Откуда: Самара
14819 Монеты

СообщениеДобавлено: Ср, 16 Июл, 2008 06:22    Заголовок сообщения: Ответить с цитатой

По моему следующий код чуть чуть по проще вашего Very Happy
Код:
<?php
  $psite = 'vedenin.ru';
  $pstr = file_get_contents("http://yandex.ru/yandsearch?site=$psite&date=&text=&spcctx=notfar&zone=all&wordforms=all&lang=all&within=0&from_day=&from_month=&from_year=&to_day=16&to_month=7&to_year=2008&mime=all&rstr=&ds=&numdoc=10");   
  $pstr1 = trim(substr($pstr,strpos($pstr,'<title>')+44));
  echo substr($pstr1,0,strpos($pstr1,' '));
?>

_________________
Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг, спортивная, энциклопедическая, поиск музыки и видео и много других
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
lazutov
$a ||= 5;
$a ||= 5;


Зарегистрирован: 30.04.2007
Сообщения: 2089

12066 Монеты

СообщениеДобавлено: Ср, 16 Июл, 2008 06:48    Заголовок сообщения: Ответить с цитатой

Мой код определяет СПИСОК, а не количество, имитируя http://webmaster.yandex.ru/check.xml
Ваш код определяет УПОМИНАНИЯ.

про количество.
Код:
// Кол-во проиндексированных в Яндекс страниц (с www и без)
function getIndexYa($url)
{


function ya_rhost($rhost){ // функция "переворачивания" домена
$out='';
$part='';
while(strpos($rhost,'.')!==false){
 $part=substr($rhost,0,strpos($rhost,'.'));  // берем часть
 $rhost=substr($rhost,1+strpos($rhost,'.')); // удаляем их исходного
 $out='.'.$part.$out;                        // приделываем кго и точку к резутьтату
}
$out=$rhost.$out;                            // в конце от исходного остается только домен верхнего уровнея , примепляем и его
  return $out;
}


$res=utf8_win(ya_pget('http://yandex.ru/yandsearch?p=0&pag=u&site='.$url.'&lang=ru&rd=0&text=rhost%3D%22'.ya_rhost($url).'%22|rhost%3D%22'.ya_rhost($url).'.*%22'));
    preg_match('!(Нашлось|Нашлась)<br>(.*?)страниц!si', $res, $backPages); // забрали страницу и нашли О_О
   return $backPages[2];
}

_________________
lazutov.ru - блог, Lwhois - Удобный whois для windows | NameIntelligence -все будет... Зимой... |whois-сервис с дополнительными возможностями
Регистрация доменов RU(3 регистратора, прямые договора)-150р и дешевле Smile - в ЛС
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Веденин
$a ||= 5;
$a ||= 5;


Зарегистрирован: 17.05.2007
Сообщения: 872
Откуда: Самара
14819 Монеты

СообщениеДобавлено: Ср, 16 Июл, 2008 06:52    Заголовок сообщения: Ответить с цитатой

Да уже сам понял Embarassed виноват

P.S. По моему в 99% случаев важно кол-во страниц, а не список, честно говоря не представляю что буду делать со списком из 3+ тыс страниц Shocked

Если цель узнать проиндексирована страница чужого сайта со своей ссылкой, то проще задать условие url = url страницы в поиске,если не проиндекстрована то яндекс не найдет ничего, результаты для своего сайта как правило не важны, так как у яндекса индексация как правило даже более избыточна (у меня максимум 1500 реальных страниц на сайте)
_________________
Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг, спортивная, энциклопедическая, поиск музыки и видео и много других
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
lazutov
$a ||= 5;
$a ||= 5;


Зарегистрирован: 30.04.2007
Сообщения: 2089

12066 Монеты

СообщениеДобавлено: Ср, 16 Июл, 2008 08:37    Заголовок сообщения: Ответить с цитатой

Цитата:
сли цель узнать проиндексирована страница чужого сайта со своей ссылкой, то проще задать условие url = url страницы в поиске

http://lazutov.ru/php-massovaya-proverka-spiska-stranic-na-proindeksirovannost-yandeksom/
_________________
lazutov.ru - блог, Lwhois - Удобный whois для windows | NameIntelligence -все будет... Зимой... |whois-сервис с дополнительными возможностями
Регистрация доменов RU(3 регистратора, прямые договора)-150р и дешевле Smile - в ЛС
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Веденин
$a ||= 5;
$a ||= 5;


Зарегистрирован: 17.05.2007
Сообщения: 872
Откуда: Самара
14819 Монеты

СообщениеДобавлено: Чт, 17 Июл, 2008 09:35    Заголовок сообщения: Ответить с цитатой

Вот код возвращающий список проиндексированых страниц сайта,
по моему он все-таки проще Вашего Smile :
Код:
GetUrl('vedenin.ru',0.1);

function GetUrl($psite,$psleep)
{
  $j = 0;
  $pstr = "!";
  while(strlen($pstr)>0){     
    $pstr = file_get_contents("http://yandex.ru/yandsearch?p=$j&site=$psite&date=&text=&spcctx=notfar&zone=all&wordforms=all&lang=all&within=0&from_day=&from_month=&from_year=&to_day=17&to_month=7&to_year=2008&mime=all&rstr=&ds=&numdoc=50");   
    while(strpos(' '.$pstr,"http://$psite")>0){
       $pstr = trim(substr($pstr,strpos($pstr,"http://$psite")));
       echo substr($pstr,0,strpos($pstr,'"')) . "<br>\n";
       $pstr = substr($pstr,5);
    }
    sleep($psleep);
    $j++;
  }
}

_________________
Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг, спортивная, энциклопедическая, поиск музыки и видео и много других
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
lazutov
$a ||= 5;
$a ||= 5;


Зарегистрирован: 30.04.2007
Сообщения: 2089

12066 Монеты

СообщениеДобавлено: Чт, 17 Июл, 2008 09:49    Заголовок сообщения: Ответить с цитатой

Веденин
это конечно проще, НО чтобы получить верный список, надо
а) искать не по URL. а по коду отданной страницы. http://site может быть много.
б) точный список дает только эмуляция rhost( ответ поддержки яндекса )

Вы не против, если данный код будет размешен у меня со ссылкой на..<Куда скажите>?
_________________
lazutov.ru - блог, Lwhois - Удобный whois для windows | NameIntelligence -все будет... Зимой... |whois-сервис с дополнительными возможностями
Регистрация доменов RU(3 регистратора, прямые договора)-150р и дешевле Smile - в ЛС
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
lazutov
$a ||= 5;
$a ||= 5;


Зарегистрирован: 30.04.2007
Сообщения: 2089

12066 Монеты

СообщениеДобавлено: Чт, 17 Июл, 2008 09:51    Заголовок сообщения: Ответить с цитатой

file_get_contents очень легко ловится. если его будет отлавливать, ваш скрипт работать не будет.
_________________
lazutov.ru - блог, Lwhois - Удобный whois для windows | NameIntelligence -все будет... Зимой... |whois-сервис с дополнительными возможностями
Регистрация доменов RU(3 регистратора, прямые договора)-150р и дешевле Smile - в ЛС
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Веденин
$a ||= 5;
$a ||= 5;


Зарегистрирован: 17.05.2007
Сообщения: 872
Откуда: Самара
14819 Монеты

СообщениеДобавлено: Пт, 18 Июл, 2008 09:21    Заголовок сообщения: Ответить с цитатой

Сейчас отлавливают? Нет! Если Яндекс изменит код странички скрипт тоже работать не будет.
Тем более я думаю прокси тоже могут что то похожее использовать, так что смысла его ловить Яндексу нет,
достаточно ограничивать по ip.

Новый код скрипта:
Код:
GetUrl('vedenin.ru/V*','vedenin.ru/',0.1);

function GetUrl($psite1,$psite,$psleep)
{
  $j = 0;$pstr = "!";$tmp2="@";$z1 = 1;$z2 = 0;
  while($z1>0 && $z2 != $z1){     
    $z2 = $z1;
    $pstr = file_get_contents("http://yandex.ru/yandsearch?p=$j&site=$psite1&date=&text=&spcctx=notfar&zone=all&wordforms=all&lang=all&within=0&from_day=&from_month=&from_year=&to_day=17&to_month=7&to_year=2008&mime=all&rstr=&ds=&numdoc=50");       
    $z1 = strlen($pstr)>0;
    while(strpos(' '.$pstr,"http://$psite")>0){
       $pstr1 = trim(substr($pstr,strpos($pstr,"http://$psite")));
       $tmp1  = substr($pstr1,0,strpos($pstr1,'"')) . "<br>\n";
       if(strpos($tmp2,'@'.$tmp1.'@')>1) return;          
       echo $tmp1;
       $tmp2 .= $tmp1.'@';$pstr = substr($pstr1,5);
    }
    sleep($psleep);
    $j++;
  }
}


Первый параметр шаблон, второй адрес сайта, третий задержка в секундах перед каждой страницей.
В шаблоне можно задавать либо сайт/каталог/ можно и вида
vedenin.ru/Vide* тогда он найдет все пути начинающиеся с Vide.
[quote="lazutov"]а) искать не по URL. а по коду отданной страницы. http://site может быть много. [quote="lazutov"]
Сейчас каждый url только один раз встречается в результатах Yandex, если у вас конечно нет ссылок на гланой странице яндекса на свой сайт Smile Потом что-то может поменятся, но тогда максимум это одна ссылка вернется несколько раз.

lazutov писал(а):

б) точный список дает только эмуляция rhost( ответ поддержки яндекса )

Какой список даст тогда этот вариант? Если все уникальные для
яндекса страницы тогда имхо этот список более нужен для раскрутки чем просто список просто проиндексированых страниц. Cool


Цитата:
Вы не против, если данный код будет размешен у меня со ссылкой на

Не против, можете поставить ссылка на all.vedenin.ru (Тематические поисковые системы Рунета) Laughing
_________________
Тематические поисковые системы Рунета: Танцевальная, программиста, поиск книг, спортивная, энциклопедическая, поиск музыки и видео и много других
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
lazutov
$a ||= 5;
$a ||= 5;


Зарегистрирован: 30.04.2007
Сообщения: 2089

12066 Монеты

СообщениеДобавлено: Пт, 18 Июл, 2008 09:38    Заголовок сообщения: Ответить с цитатой

Веденин
Про папки это интересно. Сравнил получаемые списки. - они идентичны - разный порядок.
Фактически, мы с вами делаем одно и тоже разными мотодами - только и всего. Very Happy
_________________
lazutov.ru - блог, Lwhois - Удобный whois для windows | NameIntelligence -все будет... Зимой... |whois-сервис с дополнительными возможностями
Регистрация доменов RU(3 регистратора, прямые договора)-150р и дешевле Smile - в ЛС
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов EOMY.NET -> Раскрутка Часовой пояс: GMT
На страницу 1, 2  След.
Страница 1 из 2

 


EOMY TOP 100 Rambler's Top100   Рейтинг@Mail.ru    



Powered by phpBB © 2001, 2005 phpBB Group






Рейтинг SIMPLETOP.NET