Пишем бота для Instagram на Python |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2020-04-11 18:06 Чтобы охватить большую аудиторию в Instagram, получить больше лайков и новых подписчиков, мы обращаемся за помощью к специалистам: SocialCaptain, Kicksta, Instavast и другим компаниям. У них есть автоматизированные инструменты, которые делают за вас всю работу. За это мы платим большие деньги – но то же самое можно получить бесплатно, используя InstaPy. Мы напишем бота на Python, который автоматизирует ваши действия в Instagram. В результате вы получите больше лайков и подписчиков с минимальными усилиями. Параллельно разберемся в автоматизации браузера, работе Selenium и шаблона Политика Instagram Убедитесь, что вы ознакомились с Политикой предоставления услуг Instagram, прежде чем начинать работу. Как устроены боты Instagram Прежде чем начинать автоматизировать что-либо, давайте подумаем, как получает лайки и подписки в Instagram реальный пользователь? За счет активности. Человек размещает посты, просматривает ленту, лайкает и комментирует посты других людей. Боты делают то же самое, но не тратя ваше время. Вы лишь устанавливаете критерии выбора. Очень важны настройки бота, ведь от них напрямую зависят результаты, которые вы получите. Важно отобрать те профили, владельцам которых будет интересен ваш контент. Например, если вы продаете в Instagram женскую одежду, будет разумно научить бота отслеживать женские аккаунты, а также посты с хештегами Но как реализовать это технически? Instagram Developer API ограничен и не подойдет для наших целей. Следует обратиться к браузерной автоматизации. Это работает очень просто:
Давайте перейдем к практике. Для начала напишем бота, который сможет самостоятельно зайти в ваш Instagram-профиль. Автоматизация браузера Для первой версии бота будем использовать Selenium – инструмент, работающий под капотом InstaPy, к которому мы перейдем чуть позже. Для начала установите сам Selenium. Убедитесь, что на вашем компьютере установлен браузер Firefox и Firefox WebDriver. Мы будем работать с этим браузером, так как в последней версии InstaPy нет поддержки Chrome. 1. Открываем браузер Создайте файл с расширением Сначала мы импортируем нужные пакеты. Затем инициализируется драйвер Firefox и запускается браузер. Бот набирает в адресной строке адрес 2. Открываем страницу авторизации Добавим авторизацию. Для начала составим пошаговый алгоритм действий:
Примечание Если по адресу https://www.instagram.com/ сразу открывается страница авторизации и нет ссылок с текстом (Log in/Авторизоваться), просто пропустите этот шаг. Первый пункт мы уже выполнили. Давайте теперь найдем на странице ссылку для авторизации и кликнем по ней: Мы используем для поиска нужной ссылки XPath, но есть и другие методы. Запустите скрипт и убедитесь, что он работает. В браузере должна открыться страница авторизации. 3. Заполнение формы В форме авторизации – три важных элемента:
Давайте найдем их, введем учетные данные и залогинимся: Устанавливаем двухсекундную задержку для загрузки страницы. Находим и заполняем нужные поля. В конце ищем и нажимаем кнопку для входа. Если вы укажете правильные данные и запустите этот скрипт, он самостоятельно авторизуется в вашем Instagram аккаунте. *** Мы отлично начали, и при желании легко можем продолжить создавать бота. Дальнейшие действия очень похожи на уже сделанные: прокручиваем ленту вниз, ищем интересные посты по определенным критериями, ищем кнопку для лайка и нажимаем на нее, ищем раздел с комментариями и т. д. Хорошая новость – все эти шаги за вас может сделать InstaPy. Но прежде чем мы начнем с ним работать, давайте разберемся в основах – паттерне Page Object. Шаблон Page Object Мы написали код для авторизации – но как теперь его тестировать ? Это могло бы выглядеть как-то так: Что не так с этим кодом? Он не соответствует принципу DRY и идеям чистого кода: одни и те же фрагменты дублируются и в приложении, и в тесте. В этом контексте дублирование кода особенно плохо, так как Selenium зависит от элементов пользовательского интерфейса, а они имеют тенденцию меняться. Если это происходит, хотелось бы вносить изменения только в одном месте, а не в десятке. Здесь и приходит на помощь шаблон Page Object. С помощью этого шаблона вы создаете классы page objects для наиболее важных страниц или фрагментов страницы, которые предоставляют удобные интерфейсы для взаимодействия. Мы можем отрефакторить наш код и создать класс Логика осталась без изменений, только теперь домашняя страница и страница входа представлены в виде классов. Они инкапсулируют все действия, необходимые для поиска и обработки данных в пользовательском интерфейсе. Обратите внимание, при переходе на другую страницу с помощью метода объекта страницы, возвращается новый объект страницы. Взгляните на возвращаемое значение функции Если бы у нас уже был класс Изменим основной код: Теперь программа выглядит намного проще и понятнее. Тесты тоже можно переписать: Если в интерфейсе что-то изменится, не придется менять тесты – и это правильно. Чтобы узнать больше о шаблоне Page Object, обратитесь к официальной документации и статье Мартина Фаулера. А мы переходим к созданию бота версии 2.0 – с помощью InstaPy. Создание бота с помощью InstaPy Для начала установим InstaPy: Виртуальные среды Хорошей практикой является использование для каждого проекта отдельных виртуальных сред. Это позволяет изолировать зависимости. Авторизация в Instagram Перепишем код с использованием InstaPy: Подставьте правильный логин и пароль и запустите скрипт. Вуаля! Одна строчка кода – а результат тот же самый! На самом деле, не тот же самый. Instapy выполняет множество других действий: проверяет интернет-соединение, состояние серверов Instagram и пр. Все это вы можете наблюдать напрямую в браузере, а также в логах. Неплохо для одной строки кода, правда? Переходим к решительным действиям! Основные настройки бота Предположим, что ваш профиль посвящен автомобилям. Вы хотите, чтобы бот взаимодействовал с профилями людей, интересующихся автомобилями. Лайки Например, бот может лайкать посты с хештегами Мы передаем методу массив тегов, которые нужно лайкнуть, и количество постов для каждого тега. Другими словами, бот должен поставить 10 лайков – по пять для каждого из двух тегов. Но взгляните, что происходит в логах после запуска скрипта: По умолчанию InstaPy будет лайкать первые девять постов в ленте к дополнению к параметру InstaPy регистрирует каждое действие: упоминает, какой пост ему понравился, ссылку на него, описание, местоположение, указывает, комментировал ли и подписался ли на аккаунт. Возможно, вы заметили, что почти после каждого действия возникают задержки. Это сделано специально, чтобы Instagram не забанил ваш профиль. Вы также можете указать параметры постов, которые бот НЕ должен лайкать, с помощью метода Теперь бот будет игнорировать посты, в описании которых есть слова "naked" или "nsfw" (not safe/suitable for work). Подписки Кроме лайков бот умеет подписываться на аккаунты. Для этого предназначена функция Если вы запустите этот скрипт, то бот подпишется на 50% от тех юзеров, чьи посты он лайкнул. Опять же каждое действие будет залогировано. Комментарии Еще одна опция InstaPy – возможность оставлять комментарии. Для этого нужно сделать две вещи. Сначала разрешите комментирование вызовом метода Затем укажите, что именно писать с помощью Запустите скрипт, и бот оставит один из трех указанных комментариев под половиной постов, с которыми он взаимодействовал. Закрытие сессии После того, как вы сделали все, что хотели, нужно закрыть сессию, вызвав метод Эта команда закроет браузер, сохранит логи и подготовит отчет, который вы можете увидеть в консоли. Дополнительные возможности InstaPy InstaPy – это большой проект, который имеет множество тщательно документированных функций. Рассмотрим несколько наиболее полезных из них. Квоты Нельзя скрейпить Instagram целыми днями, сервис быстро это заметит. Поэтому полезно установить квоты на действия бота. Этот код ограничивает пределы комментирования за час и за целый день. Когда бот достигнет их, он перестанет комментировать и будет ждать истечения периода квоты. Аргумент headless_browser Указанный в названии аргумент позволяет запускать бота без графического интерфейса браузера. Она полезна, если вы хотите развернуть бота на сервере, где нет или не нужен интерфейс. Производительность в таком режиме выше, так как меньше нагрузка на процессор. Обратите внимание, соответствующий флаг устанавливается при инициализации объекта InstaPy. Искусственный интеллект для анализа сообщений Мы уже научились игнорировать сообщения, в которых содержатся неуместные слова. А что делать, если описание нормальное, но сама картинка неуместна? InstaPy-бот можно интегрировать с ClarifApi – инструментом для распознавания изображений и видео: Теперь бот будет игнорировать любое изображение, которое ClarifApi посчитает NSFW. 5000 обращений в месяц – бесплатно. Количество подписчиков Зачастую не имеет смысла взаимодействовать с аккаунтами с большим количеством подписчиков. InstaPy дает возможность установить границы для этого количества, чтобы бот не тратил впустую вычислительные ресурсы вашей машины: Теперь бот не будет взаимодействовать с постами пользователей, у которых больше 8,5 тысяч подписчиков. Множество других опций и конфигураций вы можете найти в документации InstaPy. *** InstaPy – гибкий инструмент, который позволяет легко и быстро автоматизировать действия пользователя в Instagram. Его работа основана на браузерной автоматизации (Selenium) и использовании шаблона Page Object для облегчения работы с веб-страницами. Если вы еще не начали писать код, прочитайте нашу публикацию о том, как создать виртуальное окружение в Python. Это позволит избежать проблем с зависимостями пакетом. Мы также писали о том, как работает распознавание объектов в реальном времен – впоследствии бота можно улучшить, если привлечь собственную модель для анализа фотографий пользователей. Источники Источник: proglib.io Комментарии: |
|