@molostovandrei

Как автоматически скачивать файл с сайта регулярно?

Хочу написать робота который будет:
1. Переходит по ссылке (нужно учитывать то что нужно логиниться)
2. Нажимает кнопку (появляется всплывашка без обновления страницы)
3. Вводит email
4. Нажимает кнопку

Если есть у кого-то ссылки на похожие примеры автоматизации - прошу сбросить. Легче всего обычно адаптировать чей-то код под свои нужды.

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

Сам знаю SQL, слегка Python и Pandas, DAX. Я так понимаю что в этом мне может помочь Питон но пока не понял в каком направлении двигаться. Думаю человеку со знаниями это вообще покажется смешной задачей, да и сам я думаю что это сделать достаточно просто.
  • Вопрос задан
  • 94 просмотра
Пригласить эксперта
Ответы на вопрос 2
@rPman
Помимо selenium есть проще подход, для данной задачи в нем меньше кодинга.

Используя расширение к барузеру greasemonkey/tempermonkey/аналог, добавь javascript к сайту (можно настроить на разные страницы по маске свой скрипт) в котором таймаут реализуется через колбек метода
setTimeout(function(){код...},время_в_миллисекундах);
а действия примитивной последовательностью выбора элемента каким либо способом (обычно противодействия автоматизации создают тут проблемы), например самое простое через css селектор (при наличии jquery на сайте используй $('css-selector') иначе document.querySelector('css-selector'), а затем к полученному элементу можно вызывать методы типа .text(текст) или .value=текст или симуляция клика .click()...

Тестировать все можно в браузерной консоли разработчика, там же можно на халяву получить css селектор (правая кнопка на элементе в инспекторе, копировать css...)

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

Пример похожей задачи
Необходимо раз в два часа отмечать прочитанными все сообщения в чате веб сайта ozon, соответственно:
в crontab -e
2 9,11,13,15,17,19,21,23 * * * env DISPLAY=:0.0 firefox --headless --no-remote -p "ozon-auto" https://www.ozon.ru/my/chat/ 2>&1 >> ~/ozon-auto.log

этот код запускает браузер в режиме headless, его не видно и он никак не отсвечивает

А в скриптах tempermonkey написал:
// ==UserScript==
// @name         Close ozon window
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       You
// @match        https://www.ozon.ru/my/chat/
// @icon         https://www.google.com/s2/favicons?sz=64&domain=ozon.ru
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    console.log("Отмечаем сообщения прочитанными");
    setTimeout(function() {
        document.querySelector('button.ag01-a0:nth-child(1)').click();
        console.log("Закроем это через 10 секунд");
        setTimeout(function() {window.close();}, 10000);
    }, 5000);
})();

Данный код кликает на кнопку отметки всех сообщений прочитанными и закрывает окно, вместе с ним завершает работу firefox. Так как это отдельный профиль, это не затрагивает работу основного профиля браузера.

Понятно, что лучше в данном методе добавить какую то обработку ошибок, например если работа скрипта будет принудительно завершена в эти отведенные 15 секунд (например ты в это время выключал компьютер) то следующий запуск браузера будет ожидать от пользователя реакции - (восстановление предыдущей сессии или начать новую) а ты об этом не узнаешь, ведь javascript так и не будет запущен
Ответ написан
Комментировать
trapwalker
@trapwalker
Программист, энтузиаст
Чтобы это сделать вам нужно освоить selenium.
С помощью него можно делать скрипты автоматизации имитирующие действия пользователя в браузере.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы