На каком языке писать бота для браузера
В прошлых постах 🔗 Я рассказал, почему разрабатывать ботов это актуально в 2021 году, и какие вообще есть варианты заработка на ботах.
Позже мы рассматривали конкретные примеры ботов 🔗, которых вы можете написать для себя и получать активный или пассивный доход.
В этом посте мы рассмотрим ключевые этапы, которые вам предстоит пройти, чтобы зайти в разработку ботов. А в следующем посте вы узнаете о том, что нужно будет дополнительно изучить, чтобы научиться писать почти любых ботов.
Содержание:
- ☑️ Выбираем язык программирования
- ☑️ Учим язык программирования
- ☑️ Разбираемся в Telegram Bot API
- ☑️ Выбираем библиотеку для написания ботов
- ☑️ Пишем простых ботов
Выбираем язык программирования
Если вы всё-таки решились, что хотите создавать ботов не на конструкторах, а с нормальной функциональностью и контролем всего происходящего, то сейчас самое время выбрать язык программирования (далее — ЯП).
На самом деле, выбор я вам помогу сделать, но вы конечно можете отдать предпочтение и другому языку.
Выбирайте Python! Почему? Сейчас обсудим.
Популярность
В одной известной группе разработчиков ТГ ботов как-то опубликовали опрос о том кто на каком языке пишет ботов. На текущий момент в топе 3 языка: Python (41%), PHP (15%), NodeJS (11%).
Что это значит?
То, что изучая Python, у вас будет намного больше шансов найти поддержку других разработчиков в этой теме. Хотя вы конечно можете и на других популярных языках писать, все таки, выборка-то по голосованию небольшая, к тому же только среди русского комьюнити.
Низкий порог вхождения
В Python очень простой и понятный синтаксис. Да, могут быть небольшие заморочки с расстановкой отступов, но как только вы поймете общую логику — сможете легко писать код.
Если вы хоть немного знаете английский и математику, то вполне вероятно, что вы сразу сможете понять, что делает программа.
Например:
Думаю несложно догадаться, что программа напечатает ответ: " Variable b is bigger! "
Большое количество готовых решений
Учитывая низкий порог вхождения и популярность этого ЯП, сегодня на Python существуют тысячи готовых библиотек (готового упакованного кода) по работе практически с чем угодно. И каждый день появляются новые библиотеки.
Находите готовое решение 🔗, скачиваете, читаете инструкцию и используете! Больше не нужно изобретать велосипеды, умные ребята для вас все уже написали (спасибо за OpenSource).
Учим язык программирования
Ну вот, допустим вы определились в ЯП, если вы выбрали питон — отлично, тогда ниже я расскажу как стоит начать его учить. Подойдет ли это для других ЯП я не уверен.
Чтобы начало изучения было увлекательное — лучше используйте сайты, где можно учить ЯП интерактивно, то есть взаимодействуя с кодом. Тогда вам не придется сначала скачивать Python на свой компьютер и немного сэкономит вам время. А вот через какое-то время после этого, когда вы увидите, что у вас все получается — установите Python уже на собственный компьютер 🔗 и продолжайте работать в новом проекте. Это к тому, что настраивать рабочую среду (работа с venv 🔗 и все такое) не так-то уж и просто для того кто вообще не имел дела с программированием, и может кого-то оттолкнуть.
Для такого обучения существуют сайты вроде CodeAcademy 🔗, но большинство из них на английском. Если с английским у вас тяжеловато, то можно рассмотреть вариант сайтов вроде Stepik 🔗, вот еще пример 🔗.
Чаще всего такие курсы уже имеют продуманную структуру, но знайте, что для начала вам не нужно знать ВСЁ о питоне, достаточно только основ. Позже уже можно постепенно подтягивать остальное.
Если вам нравится учиться по статьям или по книжкам — можно идти и этим путём, но ВСЕГДА, запомните, всегда изучая программирование вы должны практиковаться, пробовать написать что-то собственными руками. Потому что, когда вы смотрите видео или читаете книгу, и когда вы практикуетесь путем удачи и неудач, вовлекаются разные отделы мозга связанные с памятью. Для лучшего запоминания очень важна роль непосредственной практики, и подстегивает это все нейромедиатор дофамин (научная статья 🔗), который дает то самое чувство "награды", если у вас получилось удачно запустить код.
Итак, что же изучить из основ?
-
(правила написания кода). Еще один ресурс 🔗.
- Узнать о том, как устанавливать библиотеки и импортировать их.
- Познакомиться с Функциональным программированием 🔗
- Основы Объектно-ориентированного программирования 🔗
- Узнать про работу с файлами 🔗 в Python
Практикуйтесь! Не пытайтесь понять все и сразу! Это большая ошибка.
Гораздо эффективнее будет, если вы сначала будете просто пытаться понять задумку, а потом попрактикуетесь с ее применением.
Например, если вы будете учить работу с типами данных — не нужно зазубривать всевозможные методы работы с ними, лучше попробуйте их использовать в разных ситуациях, а еще лучше будет порешать простые задачки 🔗. Как только вы почувствовали хоть какую-то уверенность — переходите дальше.
И еще одно. Как только чувствуете, что вам начинает надоедать какая-то тема, или чувствуете раздражение — отходите от компьютера и занимаетесь другими делами.
Обучение программированию должно увлекать вас и быть тем процессом, к которому хочется возвращаться.
Не заставляйте себя понять все и сразу, пусть процесс обучения будет для вас как игра, в которую сразу хочется возвращаться после прихода домой.
Не копируйте слепо код!
Пока вы обучаетесь и не умеете быстро и интуитивно разбираться в том, что делает какой-то определенный код — не копируйте его. Вам это не поможет выучить программирование. Учите сначала более простые вещи, с объяснениями к каждой строчке кода, набирайте код своими руками и запускайте. Только такой процесс позволит вам лучше запомнить.
Сколько это займет времени?
У всех разный бэкграунд, разная обучаемость и усидчивость, поэтому однозначно сказать сложно. Да и времени свободного бывает немного. Если у вас его предостаточно, то возможно за 1 неделю вы полностью справитесь с основами и будете готовы к переходу на следующий уровень. А может быть такое, что вы только по вечерам будете обучаться, то может растянуться на месяц или два.
Но еще раз, не пытайтесь понять всё и лезть в детали. Во-первых, вас это может испугать излишней сложностью. Во-вторых, это попросту может наскучить и демотивирует вас.
Помните, обучение должно быть приятным и увлекательным! Как только оно перестает таким быть — делайте перерыв и возвращайтесь позже.
Что делать, если появились ошибки.
Не унывать и Гуглить! Чаще всего решение 90% всех ошибок вначале изучения программирования вы найдете на сайте StackOverflow. А вообще, у меня есть небольшой гайд по тому как бороться с ошибками в Python 🔗.
Ошибки возникают у ВСЕХ программистов, как больших, так и маленьких. А решение проблем и каких-то ошибок и есть суть всего программирования.
Вступайте в комьюнити!
Если вы будете находиться среди таких же, как вы людей, то скорее всего вы быстрее обучитесь, потому что сможете получить поддержку. К тому же вас это будет мотивировать учиться дальше, когда вы услышите успешные истории других новичков.
Кстати, у нас есть своя группа для новичков в ботах и в Python.
Разбираемся в Telegram Bot API
Прежде всего, API - Программный интерфейс приложения 🔗. Но думаю такая формулировка ни о чем вам не говорит. Давайте разберемся в значении этих слов.
Интерфейс — та оболочка, которую видят перед собой пользователи какой-то программы. Какая-то программа то написана на каком-то ЯП, но пользователям в исходный код лезть не стоит. Например, когда вы пользуетесь Microsoft Word/Excel вы видите красивый интерфейс с кнопочками и лентами, а вся обработка действий происходит за кадром. Через интерфейс вы удобно взаимодействуете с программой.
Приложение — можно сказать синоним слову "программа"
Так вот API - это тоже такая удобная прослойка, только теперь между 2-мя программами. Одна что-то делает, а вторая к ней обращается автоматически, когда ей это понадобится. Так как программам кнопочки не нужны — они общаются с помощью инструкций. Обычно, любой API содержит набор допустимых инструкций для второй программы, чтобы можно было написать какой-то простой код и обращаться к другой программе. В таком случае можно брать одно приложение с закрытым исходным кодом (интеллектуальная собственность), но использовать его не с помощью кнопок на экране, клавиатуры и мыши, а автоматизированно, с помощью второй программы.
Telegram Bot API - такая же штука, только для управления аккаунтами Ботов. В Телеграм существуют разные сущности аккаунтов, это реальные пользователи и боты. У последних почти всегда @username заканчивается на 'bot' , например @Somebot .
Инструкция по использованию этого API есть на официальном сайте Telegram 🔗. Сейчас погружаться в детали использования его мы не будем. Если хочется изучить эту тему быстро — смотрим в конец этой статьи.
Советую ознакомиться с этой статьей, чтобы больше понять о том, что нужно знать разработчику ботов 🔗.
Выбираем библиотеку для написания ботов
Как я говорил выше, в Python существует очень много готовых решений, и API Telegram ботов — не исключение. Сегодня есть несколько топовых библиотек, с помощью которых вы можете управлять своими ботами.
Топ 3:
Aiogram
Самая продвинутая и быстроразвивающаяся библиотека-фреймворк, взаимодействие с Телеграмом в которой производится асинхронно, что делает ее на порядок мощнее двух других.
Плюсы:
Минусы:
➖ Отсутствует обширная официальная подробная документация (зато есть много примеров, а также текстовых уроков и видеоуроков)
➖ Высокий порог вхождения, необходимо разобраться в асинхронной работе в Python.
➖ Высокая требовательность от комьюнити к новичкам
python-telegram-bot
Одна из первых библиотек и тоже довольно активно развивается, где преобладает англоговорящее комьюнити. Библиотека не асинхронная, хотя был анонс, что ее собираются переписать на асинхронную работу.
Плюсы:
➕ Большое комьюнити
➕ Тайпхинты/аннотации 🔗 (для подсказок при написании кода).
➕ Самая зрелая библиотека
➕ Подробная документация 🔗
➕ Нет необходимости учить Asyncio (пока что)
➕ Очень грамотно написанный код самой библиотеки
➕ Библиотека относительно быстро обновляется
Минусы
➖ Высокий порог вхождения.
➖ Нет асинхронности
PyTelegramBotApi
Плюсы
➕ Низкий порог вхождения
➕ Множество инструкций и уроков
➕ Популярность
Минусы
➖ Очень нестабильная работа, боты часто ломаются сами по себе.
➖ Отсутствуют тайпхинты для подсказок в IDE, что усложняет написание кода
➖ Не фреймворк, а просто обертка над Telegram Bot API, поэтому многие вещи приходится изобретать самому на коленке.
➖ Очень медленно обновляется библиотека и исправляются ошибки
Вывод
Свое предпочтение я отдаю aiogram, несмотря на некоторые минусы, плюсы явно перевешивают! И вам советую!
Пишем простых ботов
И вот тот самый токен — это ключ для управления аккаунтом вашего бота. Этот ключ можно изменить, если понадобится. Этот ключ вы будете использовать для того, чтобы отправлять команды в Telegram Bot API.
Теперь можно попрактиковаться и попробовать сделать парочку запросов самому через адресную строку браузера 🔗! После того как вы поймете как это делать, вы можете начать использовать для этого ЯП и выбранную вами библиотеку.
После этого продолжаете изучать библиотеку и Telegram Bot API, и совершенствуете своих ботов.
Нужны обучающие материалы для этого? Предлагаю вам ознакомиться с большим подробным курсом, посвященным этой теме 🔗.
Selenium – один из самых популярных фреймворков автоматизации тестирования. Несмотря на то, что Selenium поддерживает шесть популярных языков программирования, его можно использовать для волшебной реализации с наименьшим количеством кода в связке с Python.
Помимо автоматизированного веб-тестирования, веб-скрейпинг с Selenium на Python – крайне популярный вариант, который вы можете реализовать с меньшим количеством кода и ошибок на Python. Как QA-инженер, я по-прежнему использую другие языки программирования, такие как Java и JavaScript в связке с Selenium, но Python – мой основной инструмент для простых/комплексных задач веб-автоматизации.
Как я уже упоминал, Python – третий по популярности язык после HTML/CSS и JavaScript. Бот на Selenium с Python может широко использоваться для автоматизации различных сценариев и задач.
В этом руководстве я подробно расскажу, как создать автоматизированного бота на Selenium с Python. Знания окажутся для вас полезными, поскольку мы коснемся различных аспектов автоматизированного тестирования с Selenium.
Инструменты для создания бота
Одной из основных целей создания бота является использование возможностей, предлагаемых Selenium для автоматизации взаимодействия с web-элементами в DOM. Существует набор инструментов Selenium для автоматизации веб-браузеров, которые можно использовать для целого ряда задач автоматизации, такие как веб-скрейпинг, автоматизированное веб-тестирование, кросс-браузерное тестирование и т.д.
Итак, давайте посмотрим на основные инструменты, необходимые для создания бота с Selenium.
Selenium
Библиотека Python – обертка над Selenium WebDriver, обеспечивает соединение и простой API для написания функциональных тестов для автоматизации веб-задач, таких как нажатие на кнопки, навигация по страницам и заполнение форм.
Скрипт теста не взаимодействует напрямую с браузером. Selenium WebDriver - это ядро фреймворка Selenium. Как говорится в этом руководстве, Selenium WebDriver играет важную роль в соединении с браузером с помощью соответствующего драйвера браузера. Однако, вы можете еще глубже погрузиться в Selenium, если хотите узнать больше о его компонентах.
Если тесты должны выполняться в локальной Selenium Grid, на целевой машине должен быть установлен соответствующий драйвер браузера:
Добрый день. Не судите строго. Вообще ничего в этой области не умею, но обладаю большим желанием делать ботов. Так вот в чем суть вопроса; хочу создавать ботов для онлайн игр, не браузерных и ботов для сайтов по типу: turboliker и т.д. Где этот вопрос наиболее актуален. По возможности, хотелось бы повторить функционал vkbot лично для себя в отдельной программе. На каком едином языке это можно реализовать?
> Я сначала думал браться за Java, но почитав понял, что это не тот язык на котором можно максимально выгодно реализовать нужные мне задачи.
> выводы эти я сделал из заключения другого человека, который описал возможности java.
А этот человек случайно вам не напел Шаляпина, чтобы вы заценили голос и возможности Шаляпина?
Ответ: бота можно написать практически на ЛЮБОМ языке программирования. И Java вполне неплохой выбор. Но для написания бота, вам нужно изучить не только язык программирования, но и технологии, что займет гораздо больше времени, чем сам язык.
Признаю, сделал ошибочные выводы.
Как и для сайта так и для игры?
Что значит бот для сайта? Парсер?
Вам нужно понять, что научиться программировать это не означает выучить язык программирования.
Это означает изучить именно программирование - принципы, технологии, архитектуру как это работает. В процессе этого, изучить несколько языков программирования на базовом уровне не представляется сложностью.
Более того, простые вещи типа простого парсера сайта, среднестатистический программист сможет написать на любом (исключая эзотерические) языке программирования, даже если он его видит впервые. Ну займет это немного больше времени. Потому что базовые инструменты во всех языках очень схожи.
Какая разница, какой язык для такой простой задачи. Важно технологии понимать.
Saboteur: я бы хотел работать не только с вебом, но и в приложения влезать. Боты для онлайн-игр, но спасибо за ответ, цели стали яснее и я уже кое-что понял.
Urushihara: Нельзя сразу влезть во все. Нельзя учиться водить самолет, катер, поезд и велосипед одновременно. Ну или можно, но тогда вы будете учить разные вещи, не всегда взаимосвязанные.
Суперпростой способ создать бота, не зная программирования.
Уровень: начинающий
Материал рассчитан на тех, кто в жизни не написал ни строчки кода. Если вы уже в курсе основ программирования, прочитайте лучше о чистых функциях.
Многие слышали про чат-ботов и роботов для общения: им пишешь, они отвечают, получается диалог с машиной. Чат-бот может рассказать анекдот, поискать за вас в интернете, забронировать столик в ресторане и что угодно ещё, чему его обучат создатели.
Иногда такое общение выглядит как общение с человеком. Может даже показаться, что там работает искусственный интеллект — и иногда так действительно бывает. Но часто всё проще: это алгоритм, который умеет распознавать некоторые ваши слова и давать ответы по заранее заготовленным шаблонам. Чем алгоритм более разветвлённый, тем естественнее и полезнее бот.
Давайте сделаем собственного чат-бота с очень простым алгоритмом. Позже вы сможете усложнить его, как захотите. Но сначала — самая база для тех, кто никогда не писал код.
Обычно, чтобы создать какую-то программу, нужно выполнить несколько действий: например, скачать программу-обработчик языка, завести проект, написать задуманную программу, скомпилировать. И только потом ей можно пользоваться. Но мы пойдём по более простому пути: напишем программу, работающую прямо в браузере, через который вы читаете эту статью. Сделать это можно лишь на компьютере, на телефоне придётся пользоваться ботом.
Мы будем решать задачу на языке JavaScript — это язык программирования, который встроен в ваш браузер и на котором написать код можно прямо сейчас, ничего не устанавливая.
Чтобы сделать что-то на JavaScript, нужно открыть консоль. Почти во всех современных браузерах это делается сочетанием клавиш Shift + Ctrl + J или Cmd + Alt + J. Справа или снизу появится дополнительное окно, в котором уже будет что-то происходить:
Если у вас не открылась консоль, зайдите в верхнее меню и поищите слово «Консоль». Обычно этот пункт прячется в разделе «Инструменты разработчика».
Когда вы открываете консоль, она сразу готова выполнять ваши команды. Если в неё вставить программу, написанную на JavaScript, и нажать Enter, ваш браузер её реализует. Если в коде есть ошибки, консоль сама подсветит их. Можно отправлять в неё программу кусками или даже построчно: браузер будет помнить всё, что происходило в вашей программе, пока вы не перезагрузите страницу.
Первая строка
В консоли можно не только писать код, но и выводить туда результаты. Давайте для начала сделаем самую простую программу, которая отобразит в консоли слово «Привет!». Для этого используем команду console.log('Привет!');
Вставим её в консоль и нажмём Enter:
Поздравляем, вы только что написали свою первую программу для компьютера! Она очень простая: компьютер всего лишь говорит «Привет!». Но оцените момент: это вы его научили так говорить. Попробуйте научить его и другим словам.
Вот мы и начали создавать своего чат-бота, который нас уже поприветствовал в консоли. Теперь сделаем так, чтобы мы тоже могли ему что-нибудь ответить. Для этого нам понадобятся переменные.
Переменные
Переменная — это ячейка в памяти компьютера, где можно что-то хранить и менять. Дело в том, что компьютеру для вычислений нужно сказать: «Вот тут данные у нас меняться не будут, а вот тут будут, выдели память». И система выделит достаточно памяти, чтобы хранить всё, что будет лежать внутри переменной. В последнюю можно записать новое значение, а можно узнать, что уже лежит внутри неё.
Чтобы дать понять компьютеру, что у нас сейчас будет переменная, нужно сказать ему слово var, после которого вписать название переменной — так нам проще к ней обращаться. Например, следующая строка создаст переменную name и положит в неё слово «Код»:
Название тут может быть практически любым, главное, чтобы оно начиналось с буквы. По-русски переменные называть нельзя, только буквами латинского алфавита. Можно было бы использовать вариант imya или zovut, но программисты считают, что чем проще название переменной, тем лучше.
Теперь посмотрим содержимое элемента. Следующая команда выведет то, что сейчас записано в переменной name:
Можно посмотреть, какое сегодня число. Это внутренняя системная переменная. Строго говоря, это не совсем переменная, но для начала давайте считать так:
Но это мы всё смотрим во внутренности компьютера. А нам нужно спросить что-то у пользователя. Чтобы мы могли ввести новые данные в нашу программу, используем команду prompt()
Вставьте в консоль команду var name = prompt('Как вас зовут?'); и посмотрите, что произойдёт. Компьютер выведет окно и будет ждать, пока вы внесёте туда своё имя. Интерфейс выглядит красиво: давайте в диалоге общаться с компьютером не через консоль, а через такие появляющиеся окошки. Для этого напишем новые команды:
Пусть компьютер проявит вежливость и скажет, что ему приятно с нами познакомиться. Чтобы он смог обратиться к нам по имени, используем переменную name — в ней как раз хранится то, что мы ответили компьютеру:
Чтобы вывести осмысленную фразу, мы взяли начало 'Привет, ', затем с помощью плюсика соединили со значением переменной name , которая хранит наше имя, а потом ещё одним плюсиком добавили к фразе концовку. Чтобы компьютер знал, что мы хотим вывести на экран текст, а не числа, используются кавычки. Компьютер воспринимает как текст то, что внутри кавычек. И выводит точно в том виде, в котором написано.
Расчёт дня рождения
Давайте соединим все наши команды в одну программу и допишем несколько новых фраз:
Обратите внимание: у нас появился новый вопрос и новая переменная hobby, в которой хранится информация об увлечении. А ещё — комментарии, которых можно добавлять сколько угодно. JavaScript не обращает внимания на то, что написано после двух косых черт:
Теперь у вас есть всё, что нужно, чтобы написать свою версию чат-бота для общения. Если продолжите решать наши задачки, то сможете научить компьютер по-разному реагировать на ваши ответы и даже вести осмысленный диалог.
Что ещё посмотреть
Вот кое-что, что может вам пригодиться при создании первого чат-бота.
performance.now() — эта команда возвращает время в миллисекундах с момента открытия текущей страницы. Можно поделить на 1 000, и вы узнаете, сколько секунд вы сидите на какой-то странице. Если поделить на 60 000 — сколько минут.
setTimeout() — позволяет выполнить любой код через определённое время. Например, вы можете задать вопрос и предоставить ровно минуту на размышление, после чего появится окно для ответа.
setInterval() — то же самое, что и предыдущее, но выполнение кода повторяется с равномерным интервалом, например раз в 5 минут. Если вы хотите научить чат-бота, чтобы он раз в час напоминал попить воды, эта команда — то, что нужно.
Как пользоваться этими штуками, мы расскажем в одной из будущих статей, но вы всегда можете самостоятельно поискать в интернете, как они работают. Пользуясь этими тремя возможностями JavaScript, получится создать неплохого бота, который будет следить за вашей продуктивностью и интервалами работы. Подписывайтесь на «Код», чтобы не пропустить новые разборы.
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Дано: в браузере открыта страница с сайтом (конкретным).
Задача: написать программу, которая будет самостоятельно бегать по ссылкам и кнопкам по определенному алгоритму, даже если браузер свернут.
Вопрос: на чем это лучше писать и куда вообще курить? Или хоть помогите правильно сформулировать запрос в гугле, потому как я даже не знаю, что мне искать.
34 ответа
Сам понял, что сказал?
Хотя дескстопные приложения на пхп и даже с гуем есть, соответсвующие либы для этого тоже. Не проблема, садись и пиши.
Гуишка совсем лишнее - представляешь, alekciy, скрипты можно и в нотпаде писать! (офигеть, да?) Нам DZенхам не до "интуитивно-понятных интерфейсов" :D
Теоритически, такое и на ЯвеСкрипт возможно, но такой трюк легко нейтрализуется, поэтому надежней ПХП, ибо не даром его деверы сказали, что он "Может всё!".
Впрочем, я бы и сам в надежности их слов сомневался, еслибы не узрил своими глазами бота на ПХП, играющего в Diablo. Говорят, бот ожил, но в последний раз, кода я его увидел он не работал из-за противной капчи (кстати, alekciy, а по этому поводу у Мелкоягких тоже есть "готовые решения", впрочем, не отвечай - сам знаю ;) куда ты меня пошлешь, ибо у таких "разработчиков" как ты все сводится если не к "Ы", то к "для этого используй то").
Дык на странице по формочкам/ссылочкам бегать - это что проблемму что ли составит? Или уже имеется "готовое решение"? Если имеется - вопросов 0, а нет - гони на бочку свое, ибо мне даже интересно стало.
Зачем тебе десктопное прикладухо? Уж не через API ли ты собрался лезть в браузер и нажимать там сцылки :D? Браузер здесь вообще косвенный элемент. Тот бот не десктопный и работал через апач нормально и всех устраивал, что не так?
(Твой вариант?)
ЗЫ: И да простят меня модеры, весна - не удержался :rolleyes:
-----------------------
А вот оно чё (узрил)! Ну можно и так, конечно. Чтож, гнедой кобыле - верста не крюк =), но я бы между ПХП и аутойдом выбрал ПХП. Аутойд - это всетаки чтобы кнопочки автоматически нажимать, а не ботов на нем делать.
Читайте также: