Первый парсер. Что такое curl_setopt?

Сразу, в лоб, начну с кода:
$url = 'http://spaces.ru';
$ci = curl_init($url);
curl_setopt($ci, CURLOPT_RETUNRTRANSFER, 1);
$reponse = curl_exec($ci);
Здесь показано, как делать запрос с помощью CURL. Впервые увидив такой синтаксис, у меня, ничего, кроме страха, и недоумения не возникало. Что за curl_setopt
? Что за CURLOPT_RETUNRTRANSFER
? WTF?
Однако, такому синтаксису есть логическое обяснение, особенно, учитывая, что это процедурный код.
Сейчас я немного уйду от описания технических подробностей, и постараюсь привести логичное пример на "котах и собаках".
Вот, если представить, что CURL - это кусок теста, то, будь мы поваром, имели бы возможность выбирать начинку, тип теста, могли бы лепить любую форму, которую пожелаем.
Итак, мы берем обычное тесто curl_init()
, и добавляем туда нужные ингридиенты с помощью curl_setopt(наше тесто, имя начинки, её количество)
. И так, постепенно, добавляя начинки, мы подойдём к этапу готовности к запеканию curl_exec(наше тесто)
. В итоге, получим результат.
У меня много времени ушло на, чтобы понять, как работает curl_setopt()
, и что это за магические аргументы curl_setopt($ch, CURLOPT_USERAGENT, 'My first parser');
. Однако, присмотревшись внимательнее, можно увидеть:
- первым аргументом передаётся дескриптор
curl_init()
, в который мы пропихиваем нами настройки (начиняем параметрами) - вторым является опция, которую изменяем. В даном случае, это системная CURL-константа, которая является обычным числом. То есть, оказывается, что опции можно задавать числом, однако, я этого не рекомендую, ведь, в нашем случае, читабельнось важнее краткости кода. Все доступные опции можно подсмотреть по ссылку http://php.net/manual/ru/function.curl-setopt.php
- третий аргумент это значение указанной опции.
Резюмирую
Для создания инициализации CURL используется функция curl_init()
.
Для установки опций curl_setopt($descriptor, $key, $value)
Эти две записи являются тождественными:
curl_setopt($ch, CURLOPT_USERAGENT, 'My first parser');
curl_setopt($ch, 10018, 'My first parser'); //этот вариант записи не рекомендуется
К концу прочтения этой статьи, вы уже должны понимать, как написать свой первый парсер. Этих знаний, в сумме с основами работы парсеров будет достаточно, чтобы написать простой парсер.
Для большего понимания напасания парсеров, рекоменлую прочитать статью:
Которая на примера парсера картинок покажет, как писать парсеры с помощью встроенной функции file_get_contents
. Особенно полезным это придётся в случае невозможности применения curl в вашей ситеме.