Давно не создавал темы с урокамТак вот,сегодня раскажу как писать граберы с помощью cURL.
Первое,что нам понадобится это хостинг с поддержкой данной библиотеки (cURL).
А сейчас раскажу в чём отличия между cURL и file_get_contents()
Как известно cURL намного функциональней чем функция file_get_contents() сейчас опишу то что можно делать с помощью сURL но нельзя делать с file_get_contents()
1.Можно заменять юзер агент
2.Можно устанавливать время загрузки страницы
3.Можно заменять хеадеры
Отличий много,но как по мне самое большое то,что сURL работает намного быстрей.
Теперь перейдём к практике.Наша задача ограбить страничку \"Курсы валют\" с сайта http://wap.rate.mail.ru вырезать мы ничего не будем,это зделаете сами.
Создаём файл,в нём прописываем:
<?php
?>
надеюсь все знают для чего это?Это значит что код внутри этих ограничений будет выполнен на языке php.
Далее мы начнём сеанс cURL зделаем мы это с помощью функции curl_init() которую присвоим к переменной с названием \"curl\" Внимание! Переменную можете называть любым именем.
<?php
$curl = curl_init();
?>
Далее нам нужно ввести адрес ограбленной странички.
<?php
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,\'http://wap.rate.mail.ru\');
?>
Обьясняю что к чему.Функция curl_setopt() устанавливает параметры для сeанса cURL заданным переменной \"curl\" Функция имеет следующий вид
curl_setopt(сеанс,опция,значение)
В нашем случае опция - CURLOPT_URL означает что нам нужно получить данные с определенного URL,а в значение мы вписываем адрес страницы которых хотим ограбить.
Теперь давайте установим следующие параметры для нашего сеанса.
<?php
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,\'http://wap.rate.mail.ru\');
curl_setopt($curl,CURLOPT_USERAGENT,\'Nokia: 5130\');
curl_setopt($curl,CURLOPT_TIMEOUT,5);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
?>
CURLOPT_USERAGENT - устанавливает наш USER AGENT тоесть админ сайта который мы будем грабить будет видеть наш ЮА как \"Nokia: 5130\" можно для прикола написать \"Google_bot\".
CURLOPT_TIMEOUT - это таймаут загрузки страницы,мы выставили 5,если наша страница будет грузиться более 5 секунд,то загрузка приостановится
CURLOPT_RETURNTRANSFER - означает что мы сможем изменять содержимое страницы до его вывода.
Это почти всё,осталось вывести данные и закрыть сеанс cURL
<?php
$curl = curl_init();
curl_setopt($curl,CURLOPT_URL,\'http://wap.rate.mail.ru\');
curl_setopt($curl,CURLOPT_USERAGENT,\'Nokia: 5130\');
curl_setopt($curl,CURLOPT_TIMEOUT,5);
curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
$text = curl_exec($curl);
curl_close($curl);
echo $text;
?>
Функция curl_exec() присваивает переменной \"text\" данные с ограбленной странички,а curl_close() закрывает наш сеанс с cURL.
echo $text; - выводит переменную \"text\" в которой хранится данные с ограбленной странички.Вот собственно и всё,регулярные выражения такие как str_replace и preg_replace которые предназначены для замены или вырезания данных пишем перед echo $text;
Вырезаем всё собственно как и через file_get_contents();
Советую прочитать документацию о функции curl_setopt() и особо обратить внимание на опции
http://www.php.su/functions/?curl-setopt
Автору аще респект гг где тут плюсы тыкаются
curl_setopt($curl,CURLOPT_URL,\'http://сайт.ру/?\'.$_SERVER[\'QUERY_STRING\']);