Было время, когда я пытался написать серию статей о библиотеке curl: раз, два, три, но бросил эту затею, не потому, что статьи были бесполезные, и их никто не читал, а потому, что сам я уже не пользуюсь функциями curl в чистом виде. А писать статьи о том, чем сам не пользуешся – бред.
Год назад я написал класс s_http (сокр. samborsky_http), который облегчил мою программистскую жизнь. Именно об этом классе я хотел бы поговорить. Создан он как раз на основе curl, а пользоваться им гораздо проще, чем работать с чистым curl api. Главное – для большинства задач он подходит.
Особенности:
- Класс старается получить от сервера сжатые средствами gzip,deflate данные, если конечно сервер такое может. Нужно для экономии трафика.
- Если класс в момент скачивания страницы получает 302 редирект, он переходит по нему.
- По умолчанию User-Agent файрфоксовский, но вы можете сами его установить.
- Все кукисы, полученные от вебсервера запоминаются. Очень удобно, если нужно парсить из-под логина.
- Если пользователем изначально не задан Referer, то класс ставит в это поле предыдущую скачанную страницу, как это делают браузеры.
Подключение класса, инициализация.
Для последующих примеров, я этот код не пишу. Но важно понимать, что он обязателен.
// Подключаем файл с классом
include('s_http.php');
// Создали класс
$http = new s_http();
// Инициализируем
$http->init();
Пример I. Скачиваем главную страницу Яндекса.
Самый распространенный код. Просто скачиваем страницу.
if( $http->get('http://www.yandex.ru/') ){
// Все ок, выводим скачанную информацию
echo $http->data();
}
else{
// Покажем последнюю ошибку
echo $http->error();
}
Читать далее »