Парсинг PHP библиотека CURL

Парсинг PHP: Библиотека CURL

В данном уроке мы разберем основы работы с библиотекой CURL. Эта библиотека является намного более продвинутой альтернативой функции file_get_contents. В отличие от нее, CURL позволяет работать с куками, с заголовками, позволяет отправлять формы и переходить по редиректам.

Библиотека CURL не требует дополнительных файлов, и ее не нужно подключать. По факту CURL уже давно не библиотека, так как уже давно включена в PHP сборку. Но все же в некоторых версиях её может и не быть, поэтому лучше проверить подключение CURL в файле php.ini

Для начала мы сделаем простой запрос, который просто достает данные, как это делает file_get_contents.

Есть несколько обязательных функций для работы с CULR.

curl_init() – инициализирует сеанс. Работу этой функции, в дальнейшем, нужно будут передавать в другие функции, поэтому желательно записать ее в переменную. $curl = curl_init() .

curl_setopt() – это основная функция, которая обрабатывает CURL запросы. В зависимости от переданных параметров, функция выполняет разную работу.

curl_setopt($curl, CURLOPT_URL, 'http://prog-time.ru') – указываем адрес страницы. Первый параметр передает работу функции curl_init() . Вторым параметром передается специальная константа. Третий параметр – url страницы.

curl_exec($curl) – выполняем запрос. Эта часть кода прописывается в самом конце, после всех правил.e

Вот код который обязательно должен быть прописан :

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, $url);
curl_exec($curl);

Три функции вместо одно. Вам кажется что это наоборот усложняет код, но дальше вы узнаете почему CURL лучше.

Запись результата в переменную

По стандарту CURL всю полученную информацию выводит на эран. Для того чтобы вывести данные на экран, пропишем следующее

curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);

Первый параметр передает работу функции curl_init() . Вторым параметром передается специальная константа. Третий параметр – 1, это сравнимо со значением true.

Так же нужно записать работу функции curl_exec в переменную. Например так.

$result = curl_exec($curl);

Переход по редиректам

Некоторые страницы сайтов содержат редиректы, которые перекидывают пользователя на другие страницы. Если вы будете парсить такие страницы функцией file_get_contents, она не станет переходить по редиректам и вернет пустую страницу.

И здесь мы получаем первую особенность библиотеки CURL. У нее есть специальная константа для функции curl_setopt() –
CURLOPT_FOLLOWLOCATION.

Записывается это так:

 curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true); 

Если последним параметром вы передадите true, функция будет переходить по всем редиректам и остановится только когда пройдет последний.

Но бывают случаи когда редиректов слишком много и нам нужно остановиться на определенном. Для этого нужно добавить дополнительную строчку кода.

 curl_setopt($curl,  CURLOPT_MAXREDIRS , 3);

Последним параметром передается количество редиректов.

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

function parser($url){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
return $result;
}

В следующей записи, разберем дополнительные условия для работы CURL.

Хочешь научиться программировать?!

Заходи в нашу группу Вконтакте, там много полезной и интересной информации

Оставить комментарий

avatar
  Подписаться  
Уведомление о