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

    @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 так и не будет запущен
    Ответ написан
    Комментировать