Парсинг фото из инстаграм

1 декабря, 2018 13:48
Admin
19 июня, 2022 8:58

Иногда у веб-разработчиков возникает необходимость размещения фотографий из инстаграма на своих сайтах или сайтах заказчиков. И поскольку работа программиста заключается в автоматизации различных процессов, данная задача не является исключением. Поэтому одним из возможных и наиболее подходящих вариантов автоматизации данного процесса является парсинг фотографий из instagram с помощью его api. Так как в своей практике мне приходилось сталкиваться с подобной задачей, именно о ее решении и пойдет речь в данной статье.

Как получить данные из инстаграм?

Чтобы в ответ на ваш запрос инстаграм возвращал json данные, с которыми можно будет работать, необходимо получить access_token. Как получить access_token написано в статье: «Как получить токен в инстаграм (access_token)».

Для того, чтобы получить фотографии из своего аккаунта, необходимо отправить следующий GET запрос:

https://api.instagram.com/v1/users/self/media/recent/?access_token=ACCESS-TOKEN

Для этого, в нашем случае мы будет использовать библиотеку curl. Код на получение данных будет иметь следующий вид:

<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://api.instagram.com/v1/users/self/media/recent/?access_token=ACCESS-TOKEN");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$content = curl_exec($ch);

curl_close($ch);
?>

Примечание: предварительно убедитесь, что на вашем хостинге установлена библиотека curl, либо добавляйте проверку в ваш код. Если библиотека не установлена, можно воспользоваться функцией file_get_contents.

Не забываем заменить ACCESS-TOKEN на свой. В итоге в переменную $content получаем json ответ из инстаграм.

Что дальше?

Поскольку, теперь у нас есть все необходимые данные, записанные в переменной $content все, что остается — это декодировать нашу переменную функцией json_decode и работать с ней как с объектом для получения необходимых данных.

Для примера, код на получение и вывод фотографий может иметь следующий вид:

<?php
$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://api.instagram.com/v1/users/self/media/recent/?access_token=ACCESS-TOKEN");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// получаем данные
$content = curl_exec($ch);

curl_close($ch);
// декодируем данные
$contentJson = json_decode($content);
if($contentJson):
?>

  <?php foreach($contentJson->data as $pic): ?>
    <div><img src="<?php echo $pic->images->standard_resolution->url;?>"></div>
  <?php endforeach; ?>

<?php
endif;
?>

Кроме фотографий, в переменной $contentJson нам доступна прочая информация, например: ссылка на изображение, количество лайков, количество комментариев и прочее.

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

Предупреждение: следует отметить, что некоторые изменения инстаграм аккаунта могут привести к изменению access_token (например: смена пароля), в таком случае его необходимо получить заново.

Подобным образом можно взаимодействовать с api инстаграм для реализации прочих задач, выполнение которых возможно в рамках данного api. Более подробную информацию можно найти здесь: https://www.instagram.com /developer/endpoints/