Создание Instagram-бота на Python

Очень многим людям хотелось бы автоматизировать свои задачи в Instagram. Им, безусловно, пригодится эта статья, в которой мы описали создание Instagram-бота на Python при помощи библиотеки Instabot.

Мы видели довольно много пособий по созданию Instagram-ботов, но все они так или иначе использовали библиотеку Selenium. При помощи таких ботов открывается веб-страница и анализируется ее код. Это больше походит на вебскрайпинг с использованием Python.

А наша статья совсем не об этом. Здесь мы создадим настоящий бот. Никакой проверки кода страниц Instagram (как это делают библиотеки selenium или beautiful soup) производиться не будет.

Оглавление

  1. Установка библиотеки INSTABOT-PY
  2. Что наш Instagram-бот может делать?
  3. Написание кода
    1. Вход в Instagram аккаунт
    2. Получаем список подписчиков
    3. Загружаем фото при помощи Instarram-бота
  4. Заключение

Установка библиотеки INSTABOT-PY

В данной статье для создания Instagram-бота мы используем язык программирования Python 3.

Начнем с установки необходимой нам библиотеки при помощи команды pip.

# For Mac and Linux Users
pip3 install instabot-py
# For Windows Users
pip install instabot-py

Эта команда установит библиотеку из репозитория PyPi.

Если вы хотите использовать исходный код из репозитория GitHub, то можно использовать следующую команду:

pip3 install git+https://github.com/instabot-py/instabot.py

Что наш Instagram-бот может делать?

Как уже говорилось выше, наш бот будет отличаться от ботов с логикой Selenium или Beautiful Soup, которая основана на вебскрейпинге. Наш бот сможет:

  • входить в аккаунт Instagram;
  • просматривать подписчиков и те аккаунты, на которые подписаны вы;
  • ставить лайки фото или видео;
  • подписываться на аккаунты или отписываться от них;
  • создавать комментарии и просматривать их.

Instabot — реально крутая библиотека. За более подробной информацией вы можете обратиться к ее документации.

[python_ad_block]

Написание кода

Все это конечно звучит внушительно, но давайте не будем вдаваться в теоретические детали и сразу перейдем к кодингу. И вы наверно будете удивлены, что мы сможем написать бота в четыре строчки кода.

Вход в Instagram

Мы начнем с импорта необходимой функции и после этого осуществим вход.

from instabot import Bot

bot = Bot()
bot.login(username="instacodeblog", password="MY_SECTRET_PASSWORD_HERE")

Запустив этот код, вы увидите в терминале следующий результат:

2021-01-13 22:17:14,366 - INFO - Instabot version: 0.117.0 Started
2021-01-13 22:17:14,367 - INFO - Recovery from <PATH_TO_YOUR_PROJECT/config/instacodeblog_uuid_and_cookie.json: COOKIE True - UUIDs True - TIMING, DEVICE and ...
- user-agent=Instagram 117.0.0.28.xxx Android (28/9.0; 420dpi; 1080x1920; OnePlus; ONEPLUS A3003; OnePlus3; qcom; en_US; 180xxx800)
- phone_id=8f9xx80d-b0de-4ec1-9590-6280xxx34cf7
- uuid=22b5xx51-96bb-43b4-8ad1-b20c89dfxxxe
- client_session_id=79bxx5b2-c73d-4fe7-b5eb-f05c7xxxxx8c
- device_id=android-285xx1afebxxxbba
2021-01-13 22:17:14,368 - INFO - LOGIN FLOW! Just logged-in: False
2021-01-13 22:17:17,656 - INFO - Logged-in successfully as 'instacodeblog'!
2021-01-13 22:17:17,658 - INFO - Total requests: 49

Мы видим, что в этом результате все в порядке. Бот имитирует реальное устройство и производит вход. Видно, что логин был успешным.

Вы также можете видеть созданный каталог по имени config/. Там сохранена вся информация логов. Это поможет вам в отладке процесса.

Получаем подписчиков

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

from instabot import Bot

bot = Bot()
bot.login(username="instacodeblog", password="MY_SECTRET_PASSWORD_HERE")
bot.get_user_followers('instacodeblog')

Теперь запустим данный код и получим следующий результат:

2021-01-13 22:17:17,366 - INFO - Instabot version: 0.117.0 Started
2021-01-13 22:17:17,367 - INFO - Recovery from <PATH_TO_YOUR_PROJECT/config/instacodeblog_uuid_and_cookie.json: COOKIE True - UUIDs True - TIMING, DEVICE and ...
- user-agent=Instagram 117.0.0.28.xxx Android (28/9.0; 420dpi; 1080x1920; OnePlus; ONEPLUS A3003; OnePlus3; qcom; en_US; 180xxx800)
- phone_id=8f9xx80d-b0de-4ec1-9590-6280xxx34cf7
- uuid=22b5xx51-96bb-43b4-8ad1-b20c89dfxxxe
- client_session_id=79bxx5b2-c73d-4fe7-b5eb-f05c7xxxxx8c
- device_id=android-285xx1afebxxxbba
2021-01-13 22:17:17,368 - INFO - LOGIN FLOW! Just logged-in: False
2021-01-13 22:17:17,656 - INFO - Logged-in successfully as 'instacodeblog'!
Getting followers of 45038783390: 100%|███| 29/29 [00:01<00:00, 28.00it/s]
2021-01-13 22:17:17,658 - INFO - Total requests: 49

По сравнению с предыдущим результатом тут есть одна дополнительная строчка. Она показывает количество подписчиков у данной учетной записи Instagram (id #45038783390).

К сожалению, их всего 29.

Загружаем фото при помощи Instagram-бота

Пойдем дальше и выполним еще одну задачу. Давайте заставим нашего бота загрузить фото вместе с какой-нибудь классной подписью. В подпись мы добавим хэштег.

Мы снова изменим приведенный выше изначальный код, добавив в него опять только одну строку.

Это реально настоящая автоматизация, вы можете увидеть этот пост в Instagram и поставить ему лайк.

from instabot import Bot

bot = Bot()
bot.login(username="instacodeblog", password="MY_SECTRET_PASSWORD_HERE")
bot.upload_photo( 'Instagram_bot.jpg', caption='Create Instagram Bot in Python 3 using instabot-py Library. \\n This Post is uploaded by the bot. You can check my blog for how to perform the task. \\n\\n #instacodeblog #instagrambot #instabot #bot #python #pythonproject #programming #fun')

Что ж, сделано. Вот и все, что нужно, чтобы загрузить фото в личный кабинет при помощи бота. Теперь вы можете планировать и автоматизировать ваши текущие задачи. Это будет отлично работать.

Результат в терминале будет иметь следующий вид:

2021-01-13 22:56:22,366 - INFO - Instabot version: 0.117.0 Started
2021-01-13 22:56:22,367 - INFO - Recovery from <PATH_TO_YOUR_PROJECT/config/instacodeblog_uuid_and_cookie.json: COOKIE True - UUIDs True - TIMING, DEVICE and ...
- user-agent=Instagram 117.0.0.28.xxx Android (28/9.0; 420dpi; 1080x1920; OnePlus; ONEPLUS A3003; OnePlus3; qcom; en_US; 180xxx800)
- phone_id=8f9xx80d-b0de-4ec1-9590-6280xxx34cf7
- uuid=22b5xx51-96bb-43b4-8ad1-b20c89dfxxxe
- client_session_id=79bxx5b2-c73d-4fe7-b5eb-f05c7xxxxx8c
- device_id=android-285xx1afebxxxbba
2021-01-13 22:56:22,368 - INFO - LOGIN FLOW! Just logged-in: False
2021-01-13 22:56:22,656 - INFO - Logged-in successfully as 'instacodeblog'!
FOUND: w:717 h:717 r:1.0
2021-01-13 22:56:22,691 - INFO - Photo 'Instagram_bot.jpg' is uploaded.
2021-01-13 22:56:22,693 - INFO - Total requests: 63

Убедитесь, что ваше изображение квадратного размера. Также, в данном случае изображение находится в том же каталоге, что и файл с кодом.

От редакции Pythonist. Также рекомендуем статьи:

Заключение

Мы только что узнали, как создавать настоящие, мощные и классные Instagram-боты на Python 3 при помощи библиотеки instabot-py. Мы увидели, как с помощью данных ботов можно входить в аккаунт, смотреть количество подписчиков и загружать фото в Instagram.

Перевод статьи «INSTAGRAM BOT IN PYTHON 3 USING INSTABOT-PY LIBRARY«.