Как написать программу которая будет выполнять действия на сайте

от admin

Как написать программу для выполнения действий на сайте (веб-странице)? — Общие вопросы веб разработки

Данная версия знаменует собой важную веху в разработке продукта. Из нововведений: множество улучшений, обеспечение повышенной производительности и расширенные функциональные возможности.

WT Revars insert

Плагин кнопки редактора для вставки шорт-кодов, созданных с помощью плагина Revars.

Статья «Как создать плагин для Joomla 4 для авторизации пользователя по email» (How to Create a.

Статья «Как создать плагин для Joomla 4 для авторизации пользователя по email» (How to Create a Joomla 4 Plugin to Allow User Login with Email)

Автоматизация однотипных действий, ч.2 ⁠ ⁠

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

А теперь продолжим изучать создание сценариев действий в Clickermann.

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

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

Для этого есть следующие комбинации:
Alt + A – Запуск сценария;

Alt + A – Пауза сценария (после его запуска);

Alt + S – Полная остановка;

Alt + R – Начать запись сценария;

Перед созданием сценария, вам необходимо подумать, при каком окне и размерах окна, будет стартовать ваша программа. Например если выработаете в сочетании окон Word, Chrome, Excel и запишите свой сценарий при таком расположении значков:

Автоматизация однотипных действий, ч.2 Программирование, Автоматизация, Видео, Длиннопост

То при таком, она уже работать не будет(если не внедрять проверку с анализом экрана, но об этом позже):

Автоматизация однотипных действий, ч.2 Программирование, Автоматизация, Видео, Длиннопост

Тоже самое касается размера окна, поэтому я советую просто открыть все окна в полноэкранный размер и записывать скрипты исходя из этого.

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

Немаловажный момент касается цикличности исполнения. Например если ваш скрипт подразумевает повторы, условно:

1) Открыть браузер
2) Нажать на закладку с адресом сайта
3) Скопировать информацию
4) Занести в таблицу эксель
5) Перейти к п.1

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

1) Открыть браузер

2) Нажать на закладку с адресом сайта

3) Скопировать информацию

3.5) Закрыть браузер

4) Занести в таблицу эксель

Автоматизация однотипных действий, ч.2 Программирование, Автоматизация, Видео, Длиннопост

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

Автоматизация однотипных действий, ч.2 Программирование, Автоматизация, Видео, Длиннопост

Тогда у вас будет достаточно времени, чтобы подойти и отключить скрипт.

Теперь о записи действий, у неё есть неоспоримый плюс — скорость и простота, достаточно включить запись действий (Alt + R) и один раз в ручную совершить эти действия, после чего остановить запись. Тут следует учесть, что запись идёт непрерывно по всем движениям мышки, я записал 10-ти секундные движения, у меня получилось следующее:

Автоматизация однотипных действий, ч.2 Программирование, Автоматизация, Видео, Длиннопост

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

Автоматизация однотипных действий, ч.2 Программирование, Автоматизация, Видео, Длиннопост

Теперь наш скрипт получился намного короче, но разобраться в нём всё ещё довольно сложно:

Автоматизация однотипных действий, ч.2 Программирование, Автоматизация, Видео, Длиннопост

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

Далее мы начнём углубляться в настоящее программирование своих сценариев.

Автоматизация однотипных действий, ч.2 Программирование, Автоматизация, Видео, Длиннопост

Представим, что нам нужно совершить выполнение какой либо последовательности действий несколько раз. Например обработать все входящие письма пришедшие нам на почту. При этом эта последовательность не является всей нашей программой, например наш скрипт проверяет почту, но основная его цель — копировать данные из одной таблички excel в другую. Как бы вы написали этот код?

Вероятно так (напишем псевдокодом):

Автоматизация однотипных действий, ч.2 Программирование, Автоматизация, Видео, Длиннопост

Работает? Да, но выглядит не очень, трудно читать и понимать.

Чтобы внести порядок в наш скрипт, мы будет использовать переменные и циклы.

Переменная — своего рода корзина, куда мы помещаем значение. Это может быть слово, буква, но чаще всего число. С этим числом можно производить арифметические действия, сравнивать его с чем либо и на основе этого, поведение нашего скрипта будет изменяться.

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

Допустим, мы точно знаем, что нам каждый день приходит 5 писем, тогда мы можем сделать так:

Автоматизация однотипных действий, ч.2 Программирование, Автоматизация, Видео, Длиннопост

ВАЖНО: общепринято выделять внутренности цикла отступом для пущей красоты и удобства понимания. для этого выделяем участок кода внутри цикла и нажимаем TAB или пробел. Вуаля, вы восхитительны.

У нас появляются новые команды:

DEFINE — объявление \ создание переменной, в скобочках указываем её название и через запятую значение, название всегда начинается со значка доллара, то есть правильно называть переменные $counter, $x, $letter, неправильно — counter, _z, $переменная.

WHILE — команда открывающая цикл, в скобочках пишем логическое выражение, например сравниваем переменную с другим числом. Сравнить можно так:

>= «Больше или равно»

<= «Меньше или равно»

пока условие будет выполняться, блок кода внутри цикла будет исполняться, на нашем примере он исполнится 5 раз. Давайте отследим логическую цепочку, в первый раз переменная VAR заходит в проверку цикла со значением 0.

0 меньше 5? Да! — выполняем код
Затем мы встречаем команду:

INC — увеличить значение переменной, в скобочках указываем какую переменную и на сколько увеличивать ($var, 1). Поэтому наша переменная увеличивается на 1 и становится один. Без увеличения переменной мы получим бесконечный цикл и бесконечное повторение действий внутри цикла.

после чего встречаем новую команду:

END_CYC — противоположность команде while — закрывает цикл. таким образом каждый раз при соответствии условий будет исполняться всё что между этими двумя командами.

Вернёмся к нашей переменной var, она увеличилась на 1 и снова отправляется на проверку соответствия условию.

1 меньше 5? Да! — выполняем код. Увеличиваем переменную до 2.

2 меньше 5? Да! — выполняем код. Увеличиваем переменную до 3.

3 меньше 5? Да! — выполняем код. Увеличиваем переменную до 4.

4 меньше 5? Да! — выполняем код. Увеличиваем переменную до 5.

5 меньше 5? Нет! — теперь цикл больше не будет исполняться, действие программы пойдет к первой команде после цикла (ниже чем END_CYC ).

Таким образом наш код стал меньше, красивее и легче в редактировании, ваш босс увидел как быстро вы принимаете задания и стал давать вам 10 заданий, соответственно приходит 10 писем, в прошлом коде вам бы пришлось копировать и вставлять, считать сколько раз вы уже вставили, не лишнего ли теперь? А сейчас достаточно поменять условие на WHILE($var < 10) и вот, всё будет точно работать 10 раз.

Автоматизация однотипных действий, ч.2 Программирование, Автоматизация, Видео, Длиннопост

Это вы, сравниваете количество ваших новых задач на столе по высоте пальца

Хорошо, а что на счёт вариативности кода? Если дальнейшие действия зависят от воли случая?
Для этого у нас есть операторы IF и SWITCH

IF — оператор сравнения, такое мы уже с вами видели в скобочках цикла WHILE. Оператор IF проверяет соответствие условию и если оно верно, выполняет действия в своем блоке кода.

Автоматизация однотипных действий, ч.2 Программирование, Автоматизация, Видео, Длиннопост

Мы создаем переменную, кладем в неё значение 2. Оператор IF проверяет, равна ли var двойке, если да воспроизведется звуковой файл, если нет, пропустит эту строку. Конец блока кода оператора IF определяется оператором END_IF

Хорошо, мы разобрались с одним вариантом, но как быть если у нас два варианта, разных действий. Для этого применяется конструкция IF — ELSE

Автоматизация однотипных действий, ч.2 Программирование, Автоматизация, Видео, Длиннопост

Теперь оператор IF проверяет на соответствие переменной двойке, если она равна 2, воспроизведется файл end.wav, при любом другом значении переменной var будет воспроизведен файл start.wav

Бывают случаи, когда нам мало двух условий, например вы публикуете фотографии в 10 социальных сетях, под каждую социальную сеть, вы подготовили разные фотографии и положили их на 10-ти разных листах в документе excel, как сделать так, чтобы в нужную социальную сеть, попадало нужное фото?

SWITCH — оператор множественного выбора. В данном примере вы проверяем переменную post в зависимости от её значения от 1 до 10 открывается соответствующая страница документа. Данный оператор содержит в себе операторы CASE и END_SWITCH. Оператор Case() содержит в скобках значение переменной, при которой именно его действия будут выполнятся,своего рода это дверь, которая открывается тогда, когда переменная(ключ) подходит к его условию(замку) ну и END_SWITCH заканчивает блок кода выбора действий.

Автоматизация однотипных действий, ч.2 Программирование, Автоматизация, Видео, Длиннопост

Также можно заметить оператор DEFAULT который срабатывает, если переменная $post содержит в себе значение не подходящее ни под один CASE.

Таким образом, применяя IF и SWITCH вы можете создать по настоящему вариативную программу и уже начинать называть себя программистом =)

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

Работать это должно примерно так:

Для этого нам потребуется функция:

KEYSTRING — имитирует ввод с клавиатуры переданного ему значения. Можно вводить числа, например KEYSTRING(«2») или строки KEYSTRING(«Hello World») или переменные KEYSTRING($var) обратите внимание, в случае переменной кавычки внутри скобок не нужны. Ваши решения можете писать тут же в комментариях и подсмотреть решения других, если что-то не получается, но настоятельно рекомендую не делать этого сразу, а попытаться решить самостоятельно.

301 пост 4.5K подписчиков

Правила сообщества

-Ставьте наши теги, если Ваш пост о программе, приложении или браузере(в том числе о расширениях, дополнениях в нему), его недоработке, баге, обновлении. Это может быть пост — обзор или отзыв.

-При возникновении споров относитесь с уважением друг к другу, а так же приводите аргументы.

Разрешено всё, что не запрещено правилами Пикабу.

Не нужно никаких задержек добавлять, это поведение настраивается. Достаточно нажать кнопку режим выполнения и выбрать фиксированное количество повторов равное 1.

Иллюстрация к комментарию

Иллюстрация к комментарию

Вообще интересно, но намного интереснее на конкретных примерах.

Скажем, «вот у меня есть данные в эксель, их надо вставить в форму на определенной странице браузера. Также надо вставить дату, её надо взять из той же строки экселя и вот таким образом вставить в форму страницы браузера. Ну а дальше просто — клики на странице, вот скрип, вот так это выглядит». ИМХО.

дайте мне тоже работу, которую можно вот так автоматизировать.

Как я написал бота в Whatsapp, чтобы не писать отчёты о выполненной работе. Рассказ не программиста⁠ ⁠

В своё время на Пикабу я начал сидеть благодаря рассказам о своей работе от совершенно разных людей. Сам я что-то давно про работу не писал. Щас напишу!

В моём отделе у инженера, занимающегося ремонтом оборудования, есть два состояния:

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

Этот проект интересен в первую очередь мне. Инженерам, труд которых он оптимизирует, всё равно. Руководству презентую его, когда обкатаю, а может к тому времени всё вообще изменится, и не презентую вовсе. Из этого следует, что:

Всё делается на моём энтузиазме, в мои обеденные перерывы, без привлечения других отделов и без любых денежных вложений.

Я осознаю, что инструменты, которые я использую, не предназначены для данного функционала, и решения получились где-то черезжопные.

Итак, от какой точки мы пляшем:

По результатам ремонта инженер должен четыре раза отчитаться:

Закрыть заявку в 1С.

Сделать запись в журнале выполненных работ/передачи смен, так как модуль, используемый в 1С катастрофически неинформативен, и туда, в силу истерически сложившихся причин, попадают не все ремонты.

Написать о выполненном ремонте в специальный чат в ватсапе, в котором, в силу истерически сложившихся причин, ведётся вся коммуникация внутри завода.

Сделать запись в ежедневном чек-листе, который требуется главному механику, так как он унифицирует анализ по всем ремонтным подразделениям завода.

План значится такой. Работа в 1С сейчас на мне. Там я могу действовать на основании оперативной информации с поля, которая живёт в журнале.

Журнал, мы начали вести аж в 2018 году, когда кто-то из электриков начал мечтать, что вот, как удобно бы было вести записи в электронном виде, а мы такие: а давай вести.

Начинался он вот так:

Как я написал бота в Whatsapp, чтобы не писать отчёты о выполненной работе. Рассказ не программиста Программирование, Python, Длиннопост, Автоматизация, Google

И к началу 2023 имел такой вид:

Как я написал бота в Whatsapp, чтобы не писать отчёты о выполненной работе. Рассказ не программиста Программирование, Python, Длиннопост, Автоматизация, Google

Далее мы пойдём по пути физиков, которые сначала объединили электрические и магнитное взаимодейстивие, а потом начали соединять полученное с ядерными силами в одну теорию.

Сперва я научил таблицу собирать чек-лист из журнала. Для этого мне понадобились всего две функции «FILTER»: по дате и по имени сотрудника.

Как я написал бота в Whatsapp, чтобы не писать отчёты о выполненной работе. Рассказ не программиста Программирование, Python, Длиннопост, Автоматизация, Google

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

Тут важно ограничить внесение данных в журнал вручную, чтобы какой-нибудь неаккуратный тычок в таблицу не отправил в чат пустое сообщение, которое всем будет интересно читать, или не начал сообщения наоборот дублировать.

Я полез курить формы. И наткнулся на JotForms. Боже, как они восхитительны. Там такая система условных переходов и автозаполнений, а ещё интеграция со всем на свете, что на них можно запустить Doom, наверное. Но ограничение в 100 заявок для бесплатного использования немного ставят на этой затее крест.

Разумеется, я, как любой нормальный человек, инструкцию читаю, когда всё уже перестаёт работать. Систему отчёта на JotForms я полностью реализовал и запустил, сука. Потом, когда лимит был превышен, пришлось объяснять людям, что факир был пьян, и мигрировать на GoogleForms. Там есть система подключаемых модулей, есть в чём покопаться и сперва всё выглядит архисложно и не так фильдиперстово, но с точки зрения человека, который эту форму будет заполнять, вроде не особо много разницы.

Как я написал бота в Whatsapp, чтобы не писать отчёты о выполненной работе. Рассказ не программиста Программирование, Python, Длиннопост, Автоматизация, Google

Форма доступна сотруднику по ссылке, открыть её он может и с телефона, и с рабочего компа, и дома открыть может, если вдруг захочет всё заспамить нафиг, но он, разумеется, не захочет.

Как я написал бота в Whatsapp, чтобы не писать отчёты о выполненной работе. Рассказ не программиста Программирование, Python, Длиннопост, Автоматизация, Google

Следущая задача: научиться читать данные из таблицы. Вот это было самое сложное. Чтобы авторизоваться и начать пользоваться Google API мне пришлось пошагово выполнять какие-то действия в консоли разработчика Google, которые я нашёл в статье на хабре, смысл которых не понимаю и повторить, если что-то слетит точно не смогу. Надо заходить в одни и те же окна, чото копировать, назначать себе какие-то права и так по кругу. Таких кругов, по ощущениям, нужно сделать писят, не меньше. Никому не советую.

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

Короче. Условно-бесплатные API для ватсапа есть. Просто они не на первой странице поиска, а на второй.

Пишем функцию, которая умеют читать строку из таблицы, функцию которая умеет отсылать сообщение в чат ватсапа, функцию обратного отсчёта, чтобы было видно, что наша программа не повисла и чтобы она стучалась в гугль не постоянно а с интервалом в 10 секунд, например. И цикл, который проверит первую функцию, что она не опухла или как, и найдя новые данные запустит вторую. Добавим повторную авторизацию в случае потери связи и пробуем запустить. Ловим баги, пробуем запустить, ловим баги, пробуем запустить, так до получения удовлетворения.

Читать:
Как редактировать html код страницы в wordpress

Как я написал бота в Whatsapp, чтобы не писать отчёты о выполненной работе. Рассказ не программиста Программирование, Python, Длиннопост, Автоматизация, Google

Кодить я не умею, решения мои наверняка неоптимальные, но оно запустилось. И глядите, это даже лайкает кто-то!

Как я написал бота в Whatsapp, чтобы не писать отчёты о выполненной работе. Рассказ не программиста Программирование, Python, Длиннопост, Автоматизация, Google

Продолжение поста «Дерзкая пятница»⁠ ⁠

У нас на работе восстание машин началось.

Продолжение поста «Дерзкая пятница» IT, IT юмор, Развлечения, Юмор, Агрессия, Эмоции, Восстание машин, Боты, Github, Удаление, Программист, Разработка, Программирование, Автоматизация, Дичь, Робот, Бот, Грубость, Ответ на пост

KellyC Image Downloader — пакетная скачивалка картинок с сайтов⁠ ⁠

Занимаюсь разработкой инструмента для массового скачивания картинок с сайтов. Т.к. как правило не все картинки на ресурсах задерживаются на долго (правообладатели \ роскомнадзор и т.п.) привык сохранять творчество понравившихся авторов локально.

Основная идея — иметь возможность при наличии фильтра автоматически захватить с сайта именно оригиналы картинок, а не просто превьюшки и рандомный мусор.

Принцип работы на примере Пикабу

Конкретно на пикабу при скачивании с закладок, сделал авто-сортировку по папкам с идентичными названиями.

Список ресурсов на которых проверял работоспособность

Там же можно найти примеры работы под конкретный сайт (в основном проверял на instagam \ twitter \ deviantart \ pinterest \ vk \ pixiv — для некоторых сайтов, оригиналы подгружаются после клика на «Загрузить доп. документы», см. примеры).

Конечно поскольку инструмент универсальный, на непроверенных сайтах может работать не идеально т.к. не для всех сайтов реализованы авто-фильтры которые будут отсеивать мусор. Но дополнительные фильтры, возможности сортировки как правило в этом случае помогают.

Любая критика, замечания приветствуются

Ответ на пост «Как автоматизировать однотипную, монотонную работу бесплатно и без навыков программирования»⁠ ⁠

Посмотрел недавно пост про автоматизирование всякого и мне так грустно стало. Я писал пару лет назад хорошее приложение, пытался исправить все косяки других кликеров, чтобы пользоваться было максимально удобно. Но, как-то не зашло и проект был заброшен.

Там много фич. К примеру, там вообще не нужно знание чего-либо и достаточно прсотонажать кнопку «запись» и он начнет записывать все дейтсвия пользователя. После чего нажимаем кнопку пуск и оно воспроизводит. МОжно потом привязать это на клавишу. Все можнго делать просто тыкая нужные компоненты. Для тех кто хочет автоматизировать что угодно — там поддержка почти полноценного JS. Попробуйте, авось зайдет, может и проект оживет. Буду рад если он будет полезен хоть кому-то

Но запустить можно где и под Linux и даже под MacOS

Умный дом⁠ ⁠

Всем привет! Особенно моим 5 подписчикам) Без вас, вероятно, я б еще лет 9 ничего не писал)

Давным-давно, когда в ходу был длиннопост.ру, я наткнулся на пост про ардуинки. Тема эта мне близка, так как учился я на программиста. Мне очень захотелось воочию увидеть как мой код реально что-то делает, поэтому я заказал этот набор не раздумывая, чем и положил начало данной истории.

Набора мне хватило надолго: я и светодиодами помигал и двигателями повращал.

Первым законченным проектом стали часы на газоразрядных индикаторах ИН-14, которые я подарил тогда еще будущей жене.

Умный дом Умный дом, Своими руками, Программирование, Электроника, Автоматизация, Пятничный тег моё, Видео, Длиннопост

Они и сейчас стоят под телевизором, безумно радуя глаз.

Это было моё первое знакомство с пайкой: навесной монтаж, удары напряжением 180V, постоянно горящие компоненты. К тому же из-за экономии я купил паяльник в фикспрайсе, так как дедовским было жутко неудобно, и даже не понимал, насколько он плох, пока у меня не появилась паяльная станция с феном)

Потом я разработал отцу на дачу систему автополива на 6 зон, с датчиками температуры и влажности почвы(чтоб не поливать в мороз и дождь), с экранчиком, часами реального времени и расписанием полива. Заказать подобную систему стоило 300к+. так что тысяч 280 мы сэкономили)

По вышеуказанному ты, дорогой читатель, вряд ли подумаешь, что я ленивый, но это так. Даже нет, я оооочень ленивый. В подростковом возрасте у меня очень сильно сбился режим сна: несколько лет я бодрствовал по ночам и засыпал к утру. Как сейчас помню: в предрассветные часы, лёжа на кровати и смотря сериал, я понимал, что хочу уснуть, но включен свет. Со светом спать проблематично, а если встать и выключить, то сон как рукой снимет.

В тот момент я захотел умный дом.

Готовые решения были отвергнуты сразу: пол ляма за однокомнатную квартиру? Нет, спасибо!

И я начал разрабатывать. Первая версия была на основе arduino mega с ethernet shield w5100(AMS) и умела только включать/выключать телевизор и свет в комнате через веб страницу. Долго он не продержался, так как mega дорогая и большая, а из доски для прототипирования постоянно выпадали проводки.

В итоге мой выбор пал на esp8266 — это малюсенький микроконтроллер, с wi-fi на борту, кучей памяти и высокой частотой процессора. А главное цена:

Умный дом Умный дом, Своими руками, Программирование, Электроника, Автоматизация, Пятничный тег моё, Видео, Длиннопост

1шт — 111 рублей!

Сервером был выбран windows планшете, raspberry pi был отброшен из-за отсутствия экрана и батареи.

И началась разработка: Sprint-Layout, ЛУТ, smd, бесконечные даташиты. Arduino IDE сменил SmingHub. Моя комната превратилась в мастерскую, во все свободные(и не очень) места были поставлены металлические стеллажи из леруа, куча коробок с компонентами с али. Тогда-то я и понял, что значит паять на коленке.

Спустя 2 года(спасибо СДВГ) у меня была плата версии 1.1 и прошивка 1.0! На ней работало всё, что я задумывал, чего не скажешь о предыдущих версиях.

Умный дом Умный дом, Своими руками, Программирование, Электроника, Автоматизация, Пятничный тег моё, Видео, Длиннопост

все версии по порядку (сверху вниз, слева направо). AirDots для масштаба)

В итоге устройство умеет и имеет:

— Управлять светодиодной лентой RGBW (10м без усилителя)

— Имитировать сигналы пультов с инфракрасным сигналом(тв, аудио системы и т.д.)

— Передавать RF(радио) команды

— 2 датчика температуры ds18b20

— 2 датчика движения

— 1 аналоговый вход (напр. для датчика света или влажности почвы)

— 4 цифровых входа/выхода (используются, только если придумываю что на них повесить, например датчик тока)

— прошивка по USB

— обновление по воздуху

Потом я женился, и приступил делать ремонт в квартире старого фонда закладывая все нужные коммуникации для умного дома, и хочу показать что из этого получилось.

Как написать скрипт на python, для управления сайтом?

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

  • нужно зайти туда
  • выбрать это
  • потом перейти сюда
  • нажать это

и т.д. как это можно реализовать? может быть библиотека есть какая нибудь? и библиотека, которая двигает курсор не подходит.

insolor's user avatar

есть модуль PyAutoGUI с помощью него можно управлять курсором надо только поставить определенные координаты и сказать что бы он нажал на эту точку. Библиотеку можно использовать не только для сайта но я для того что бы писать текст за вас. вот простой пример

Python для начинающих: как повелевать Web’ом

image

Проблема: Отправка домашних заданий требует навигации по лабиринту веб-страниц, настолько сложной, что несколько раз я отправлял задание в неправильное место. Кроме того, хоть и этот процесс занимает всего 1–2 минуты, иногда он кажется непреодолимым препятствием (например, когда я закончил задание слишком поздно ночью и едва могу вспомнить свой пароль).

Решение: Используйте Python для автоматической отправки выполненных заданий! В идеале я мог бы сохранить задание, набрать несколько клавиш и загрузить свою работу за считанные секунды. Сначала это звучало слишком хорошо, чтобы быть правдой, но потом я обнаружил Selenium, инструмент, который можно использовать с Python для навигации по сети.

image

Каждый раз, когда мы повторяем утомительные действия в Интернете с одинаковой последовательностью шагов, это отличный шанс написать программу для автоматизации процесса. С Selenium и Python нам просто нужно написать сценарий один раз, и затем мы сможем запустить его сколько угодно раз и уберечь себя от повторения однообразных задач (и в моем случае исключается возможность отправки задания в неправильное место)!

Здесь я рассмотрю решение, разработанное мной для автоматической (и правильной) отправки моих заданий. Попутно мы рассмотрим основы использования Python и selenium для программного управления вебом. Хотя эта программа работает (я использую ее каждый день!), она довольно индивидуальна, поэтому вы не сможете скопировать и вставить код для своего приложения. Тем не менее, общие методы здесь могут быть применены к неограниченному числу ситуаций. (Если вы хотите увидеть полный код, он доступен на GitHub).

Подход

Прежде чем мы перейдем к интересной части автоматизации, нам необходимо выяснить общую структуру нашего решения. Начинать программировать без плана — отличный способ потратить много часов и разочароваться. Я хочу написать программу для отправки выполненных заданий по классу в правильное место в Canvas’e («система управления обучением» моего университета). Начнем сначала, мне нужен способ сообщить программе название задания для отправки и класс. Я использовал простой подход и создал папку для хранения выполненных заданий с дочерними папками для каждого класса. В дочерние папки я помещаю готовый документ, названный для конкретного задания. Программа может выяснить имя класса по папке и название задания по названию документа.
Вот пример, где название класса — EECS491, а задание — Задание 3 — Вывод в больших графических моделях».

image

File structure (слева) и Complete Assignment (справа).

Первая часть программы представляет собой цикл, который проходит по папкам, чтобы найти задание и класс, которые мы храним в кортеже Python:

(‘EECS491’, ‘Assignment 3 — Inference in Larger Graphical Models.txt’)

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

Веб-контроль с Selenium

Чтобы начать работу с Selenium, мы импортируем библиотеку и создаем веб-драйвер, который является браузером, управляемым нашей программой. В этом случае я буду использовать Chrome в качестве браузера и отправлять драйвер на веб-сайт Canvas, где я отправляю задания.

Когда мы открываем веб-страницу Canvas, нас встречает первое препятствие — поле для входа! Чтобы обойти это, нам нужно будет ввести идентификатор и пароль и нажать кнопку входа.

image

Представьте, что веб-драйвер — это человек, который никогда раньше не видел веб-страницу: нам нужно точно сказать, куда нажимать, что печатать и какие кнопки нажимать. Есть несколько способов сообщить нашему веб-драйверу, какие элементы найти, и все они используют селекторы. Селектор — это уникальный идентификатор элемента на веб-странице. Чтобы найти селектор для определенного элемента, скажем, поле “CWRU ID”, нам нужно посмотреть код веб-страницы. В Chrome это можно сделать, нажав «Ctrl + Shift + I» или щелкнув правой кнопкой мыши на любом элементе и выбрав “Посмотреть код”. Это открывает инструменты разработчика Chrome, чрезвычайно полезное приложение, которое показывает HTML, лежащий в основе любой веб-страницы.

Чтобы найти селектор для поля «CWRU ID», я щелкнул правой кнопкой мыши в поле, нажал «Посмотреть код» и увидел следующее в инструментах разработчика. Выделенная строка соответствует элементу id_box (эта строка называется тегом HTML).

image

Этот HTML может выглядеть подавляющим, но мы можем игнорировать большую часть информации и сосредоточиться на частях id = «username» и name = «username» . (они известны как атрибуты тега HTML).
Чтобы выбрать поле id с помощью нашего веб-драйвера, мы можем использовать атрибут id или name , который мы нашли в инструментах разработчика. Веб-драйверы в Selenium имеют много разных способов выбора элементов на веб-странице, и часто есть несколько способов выбрать один и тот же элемент:

Наша программа теперь имеет доступ к id_box , и мы можем взаимодействовать с ним различными способами, такими как ввод ключей или нажатие (если мы выбрали кнопку).

Мы выполняем один и тот же процесс для поля ввода пароля и кнопки входа, выбирая каждый из них в зависимости от того, что мы видим в инструментах разработчика Chrome. Затем мы отправляем информацию элементам или нажимаем на них по мере необходимости.

Как только мы вошли в систему, нас приветствует эта слегка пугающая панель инструментов:

image

Нам снова нужно провести программу через веб-страницу, указав именно те элементы, на которые нужно нажать, и информацию, которую нужно ввести. В этом случае я говорю программе выбрать курсы из меню слева, а затем класс, соответствующий заданию, которое мне нужно сдать:

Программа находит правильный класс, используя имя папки, которую мы сохранили на первом шаге. В этом случае я использую метод выбора find_element_by_link_text , чтобы найти определенный класс. «Текст ссылки» для элемента — это просто еще один селектор, который мы можем найти, просмотрев страницу:

image

Этот рабочий процесс может показаться немного утомительным, но помните, что мы должны сделать это только один раз, когда пишем нашу программу! После этого мы можем нажать «Выполнить» столько раз, сколько захотим, и программа зайдет за нас на все эти страницы.
Мы используем один и тот же процесс проверки страницы — выбора элемента — взаимодействия с элементом, чтобы пройти еще пару экранов. Наконец, мы достигаем страницы отправки задания:

image

В этот момент я мог видеть финишную черту, но изначально этот экран меня озадачил. Я мог бы довольно легко нажать на поле «Выбрать файл», но как я должен был выбрать нужный файл для загрузки? Ответ оказывается невероятно простым! Мы находим поле Choose File с помощью селектора и используем метод send_keys для передачи точного пути к файлу (называемого file_location в приведенном ниже коде) к блоку:

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

image

Теперь мы выбираем кнопку “Отправить задание”, нажимаем, и наше задание отправлено!

image

Уборка

Управление файлами — это всегда критический шаг, и я хочу быть уверенным, что не отправлю повторно или не потеряю старые задания. Я решил, что лучшим решением будет сохранить файл, который будет помещен в папку completed_assignments , и переместить файлы в папку submitted_assignments , как только они будут загружены. Последний бит кода использует модуль os для перемещения завершенного задания в нужное место.

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

Вот как это выглядит, когда я запускаю программу:

image

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

image

Пока программа работает, я могу наблюдать, как Python работает на меня:

Выводы

Техника автоматизации с помощью Python отлично подходит для многих задач, как общих, так и в моей области науки о данных. Например, мы могли бы использовать Selenium для автоматической загрузки новых файлов данных каждый день (при условии, что у веб-сайта нет API). Хотя на первый взгляд создание сценария может показаться трудоемким, преимущество заключается в том, что мы можем заставить компьютер повторять эту последовательность столько раз, сколько захотим, точно таким же образом. Программа никогда не потеряет фокус и зайдет в Twitter. Она будет точно выполнять шаги с идеальной последовательностью (алгоритм будет прекрасно работать, пока сайт не изменится).

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

В плане окупаемости эта программа экономит мне около 30 секунд на каждое задание, а на ее написание уходит 2 часа. Так что, если я использую ее для сдачи 240 заданий, я выйду в плюс по времени! Тем не менее, отдача от этой программы заключается в разработке классного решения проблемы и многому учит в процессе. Хотя мое время могло бы быть более эффективно потрачено на выполнение заданий, а не на выяснение того, как автоматически сдавать их, я полностью наслаждался этой задачей.Есть несколько вещей, приносящих такое удовлетворение, как решение проблем, и Python оказывается довольно хорошим инструментом для этого.

image

Узнайте подробности, как получить востребованную профессию с нуля или Level Up по навыкам и зарплате, пройдя платные онлайн-курсы SkillFactory:

Похожие статьи