Используем CURL (php) практика: 20 последних запросов пользователей Яндекса

В одном из блогов видел вопрос, одной из сооставляющей вопроса как раз и было как получить 20 последних запросов пользователей Яндекса. Вот и получился из этого вопроса небольшой урок.

Используем CURL (php) практика: 20 последних запросов пользователей Яндекса

У Яндекса есть сервис, который показывает 20 последних запросов пользователей Яндекса: stat.yandex.ru/queries/last20.xml. Все было бы хорошо если бы не желание Яндекса в ограничении использования своих материалов. Говоря конкретнее, при запросе данной станицы сервис сообщал о 404 ошибке. После нескольких экспериментов стало понятно, что при первом запросе, если не были переданы COOKIES Яндекс выдает 404 ошибку и передает COOKIES. И если в повторном запросе передать полученные COOKIES, то мы с успехом получаем желаемое.

Ну вот собственно и код:

<?php
	$ch = curl_init();                                   
	curl_setopt($ch, CURLOPT_URL, 'stat.yandex.ru/queries/last20.xml');
	curl_setopt($ch, CURLOPT_HEADER, true);
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
	curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
	curl_setopt($ch, CURLOPT_USERAGENT, 'PHP Bot (http://www.yousoft.ru)');
	$data = curl_exec($ch);
	if (preg_match('|Set-Cookie: yandexuid=(.*?)|si',$data,$res)){
		curl_setopt($ch, CURLOPT_COOKIE, "yandexuid={$res[1]}");
		$data = curl_exec($ch);
		$data=iconv('utf-8', 'cp1251//IGNORE', $data);
		if (preg_match_all('|(.*?) \((\d*?)\)|si',$data,$res)){
			foreach($res[1] as $key=>$value){
				echo "{$res[1][$key]} - {$res[2][$key]}\n";
			}
		}
	}
?>

Небольшие пояснения. С 1-9 строчки мы инициализируем CURL и выполняем запрос, в 4 строке мы указываем, что хотим получить и заголовки ответа.

В 10 строке находим нужный нам COOKIES. В 11 стороке устанавливаем COOKIES для передачи в следующем запросе — строка 12.

В 13 строке конвертируем из кодировки UTF-8 в кодировку cp1251. Мне просто удобнее работать с кодировка cp1251.

14 строка отвественна за нахождение самих запросов и колличества найденных страниц для этого запроса.

Ну и наконец строки 15-17 выводят найденные запросы. Вот результат работы данного скрипта:

лучший туроператор по италии - 1067156
девочка из прошлого - 5700722
qip 2009 - 2737415
фото из фильма брат - 6345491
план текстуры потолков - 95409
чудаки смотреть онлайн - 593224
contact денежные переводы - 11580311
отдых на острове искья - 125951
брачное чтиво 2011 - 31142
Bluesystem.ru - 16041
Samsung MW 712 BR - 20576
обьем шара - 3520724
датинг - 3447785
deus ex invisible war - 305819
Наталья Рычкова - 52426
сделать аватарку - 3116229
муллагалиева значение фамилии - 334
save в контакте - 2203962
фильм бархатные ручки - 12132
задняя крышка S5230 красная - 1492

Используем CURL (php) практика: 20 последних запросов пользователей Яндекса: 2 комментария

  1. Отличная вещь, только не могу запустить )))
    Подскажите, плиз, что в Вашем коде добавить/убрать, или что допилить в моих мозгах, чтобы скрипт заработал на Денвере (или опенсервере, или ксампе).

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *