Чем парсить статистику по поисковым запросам Рамблера

1 23
Lenin123
На сайте с 05.02.2007
Offline
64
#21

Базу Пастухова берите, там уже все давно отпарсено )))))

Ц
На сайте с 15.09.2008
Offline
120
#22

А у Пастуховской базы разве по РАмблеру статистика есть?

Stripe
На сайте с 05.09.2006
Offline
222
#23

Что-то я то же не вижу там статистики Бегуна.

Stripe добавил 08.12.2008 в 16:19

На счет базы Пастухова, я ошибся, там нет статистики Рамблера, а не Бегуна.

Сайты от 30р почти по любой теме или наполнение ваших сайтов (/ru/forum/887821) дешевым контентом. Базы товаров и контента (http://nakovalnja.ru). Вечные ссылки за 1$ или 30р. (/ru/forum/741397)
MR
На сайте с 24.08.2007
Offline
76
#24

Частоту по Рамблеру можно собрать Язлом (yazzle): прокси, задержки - все есть:)

инструменты - сайт - оценка посещаемости по списку запросов, после отработки программы - в столбце "показы по рамблеру" будет частота, но показывает Yazzle только количество показов первой страницы результатов поиска для запроса, а не всех страниц.

genjnat
На сайте с 08.10.2008
Offline
230
#25

site-auditor (обновленная версия) показывает позиции по рамблеру, яндекс и гуглу плюс комплексный анализ сайта. Плюсы проги - бесплата. минусы - врет на пару тройку позиций.

Lenin123
На сайте с 05.02.2007
Offline
64
#26

а накой нам позиции? =)

freeneutron
На сайте с 23.01.2007
Offline
39
#27


<pre>
<?php
function pars($c1, $n=0, $k=0) //Функция для просмотра структуры страницы
{ //Вызывается так:
if($c1->attribute)$atr=join("--", $c1->attribute); //pars($html); или
echo str_repeat("--", $n)."{$c1->name}: $atr k: $k\n"; //pars($html->child[1]->child[0]); и т. п.
if($c1->child)foreach($c1->child as $c2)
pars($c2, $n+1, ++$k1);
}

function parse($query, $pagelen, $page, &$len=null) //Функция для парсинга. Возращает массив тегов с аттрибутами
{ //class="title n_title_2" и class="note", в которых содержится вся полезная информация
$url="http://nova.rambler.ru/srch?query=$query&pagelen=$pagelen"; //Шаблон запроса
if($page>1)$url.="&page=$page"; //1-й запрос будет без page=1, что бы не вызывать подозрений :)
$tidy = tidy_parse_string(file_get_contents($url), array('wrap' => 0), "UTF8"); //Создаем объект tidy из html-файда
// $tidy->cleanRepair(); //На всякий случай (авто-правка кода)
$html = tidy_get_html($tidy); //Получаем html структуру
$count_of_pages1=$html->child[1]->child[0]->child[4]->child[0]->child[1]->child[3]->child[0];
$count_of_pages1=split(" ", $count_of_pages1);
if($count_of_pages1)foreach($count_of_pages1 as $k=>$count_of_pages2)
$count_of_pages+=pow(10, (count($count_of_pages1)-$k-1)*3)*$count_of_pages2;
$count_of_pages=(int)($count_of_pages/$pagelen)+1;
$len = $count_of_pages; //Получаем количество страниц
$h1=$html->child[1]->child[0]->child[4]->child[1]->child[1]->child[3]->child[0]; //Эта цепочка может меняться
$h1=$html->child[1]->child[0]->child[4]->child[1]->child[1]->child[2]->child[0]; //Ее надо отискивать с помощью функции pars()
if($h1->child)foreach($h1->child as $h2) //Перебираем результаты поиска
{
$title=iconv("UTF-8", "windows-1251", $h2->child[0]->value); //тег: class="title n_title_2"
$note=iconv("UTF-8", "windows-1251", $h2->child[1]->value); //тег: class="note" (меняем кодировку, с UTF-8 на windows-1251)
$serp[]=array($title, $note); //Все складываем в один массив
}
// pars($html->child[1]->child[0]); //Если не работает, то надо экспериментировать с этим, надо искать путь к нужному тегу
return $serp;
}

$query="Недфижимость"; //Текст запроса
$pagelen=50; //Количество результатов на страницу
$pagelimit=2; //Лимит количества пропарсиваемых страниц
$serp=parse($query, $pagelen, 1, $len); //Парсим 1-ю страницу и получаем, количество оставшихся (len)
for($i=2;$i<=$len&&$i<=$pagelimit;$i++) //Парсим остальные
{
$p=parse($query, $pagelen, $i);
$serp=array_merge($serp, $p);
}
print_r($serp); //Выводим результат

?>

Просили парсилку, полльзуйтесь... :)

Для того, что бы скрипт работал, надо в php.ini раскомментировать строку: extension=php_tidy.dll

Выдает массив ($parse) массивов по два элемента:

1-й - ссылка на найденный сайт

2-й - Текст, который в выдаче прилагается к ссылке

Если, что не понятно, задавайте вопросы...

freeneutron добавил 13.12.2008 в 15:47

Еще, если в предидущем примере сделать замену

"file_get_contents" -> "get_contents"

и добавить к нему такую функцию

function get_contents($url, $proxy="")

{
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, $proxy?1:0);
curl_setopt($ch, CURLOPT_PROXY, "$proxy");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
return curl_exec($ch);
}
то с помощью последней можно задействовать всю мощь библиотеки Curl. Например, в параметре, $proxy, который поумолчанию отключен, можно передать имя или IP промежуточного прокси-сервера, в формате IP: port или name: port.

Я не сразу понял, что написал скрипт не для той выдачи, о которой в топике шла речь. :) Но с помощью этого примера можно парсить любую выдачу. Главное правильно подобрать цепочки (child[4]->child[1]->)

B
На сайте с 03.02.2005
Offline
165
#28
freeneutron:

Я не сразу понял, что написал скрипт не для той выдачи, о которой в топике шла речь. :) Но с помощью этого примера можно парсить любую выдачу. Главное правильно подобрать цепочки (child[4]->child[1]->)

Надо ещё куки запоминать, курл умеет.

Интеграция сайтов с 1С (товары, контрагенты, документы, заказы). Консультации и услуги. Есть готовые решения - быстро и недорого. Приглашаю к сотрудничеству агентства и веб-студии.
freeneutron
На сайте с 23.01.2007
Offline
39
#29
betam:
Надо ещё куки запоминать, курл умеет.

А это с какой-то хитростью связано? Не могу, посмотреть, что это за хитрость, то есть не могу зайти в

https://ad.rambler.ru/swrds/

Ведь речь про него ?

B
На сайте с 03.02.2005
Offline
165
#30
freeneutron:
А это с какой-то хитростью связано? Не могу, посмотреть, что это за хитрость, то есть не могу зайти в
https://ad.rambler.ru/swrds/
Ведь речь про него ?

там авторизация.. используется механизм сессий (как он в ПХП называется). В урлах данных о сессии нет, значит в куках авторизация и сессия сидит.

А без авторизации больше сотни слов в день сложно чекнуть. С авторизацией у меня получается около 70 штук за 5 минут.. Вручную.

1 23

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий