Вопрос или проблема
Я пытаюсь запускать свой код для веб-скрапинга на Python каждый день в определенное время, не открывая компьютер. Я посмотрел на AWS Lambda, но когда пытался настроить слои для включения selenium, pandas и chromedriver, предел размера файла был превышен. Есть ли альтернативный подход, который я мог бы использовать для развертывания моего приложения на Python, чтобы оно запускалось каждый день без больших затрат?
Давайте придерживаться AWS, так как вам понадобится включенный компьютер, даже если это не ваш. Итак, у вас есть стек Python (Pandas выдает это), Selenium и драйвер Chromium:
Настройте небольшой экземпляр EC2, любой размер, который вам подходит. Но t2.micro бесплатен, если вы на бесплатном уровне, а t4g.small на бесплатном испытании до 31 декабря 2023 года.
Затем либо настройте задачу cron на экземпляре, чтобы запустить сеанс скрапинга, либо, если вы чувствуете себя авантюрным, настройте задачу AWS Lambda, чтобы создать экземпляр EC2 и уничтожить его снова после сеанса. Вы также можете рассмотреть возможность использования сервиса AWS Resource Scheduler.
С помощью Resource Scheduler вы можете автоматически останавливать и
запускать экземпляры в нескольких регионах AWS и аккаунтах AWS в соответствии с расписанием, которое вы определяете. Конфигурация Quick Setup нацелена на экземпляры Amazon EC2, используя указанные вами ключ и значение тега.
Ответ или решение
Чтобы запустить ваш код на Python для веб-скрейпинга каждый день в определённое время, не включая при этом ваш компьютер, вы можете воспользоваться облачными решениями Amazon Web Services (AWS). Ниже приведены подробные шаги и описания выбора подходящего подхода.
Использование AWS EC2 для автоматизации веб-скрейпинга
Одним из наиболее эффективных способов является развертывание вашего кода на экземпляре Amazon EC2. EC2 позволяет вам создать виртуальную машину в облаке, на которой можно настроить выполнение вашего Python-кода с использованием таких библиотек, как Selenium и Pandas. Рассмотрим данный процесс подробнее.
Шаг 1: Создание экземпляра EC2
- Войдите в консоль AWS и перейдите в сервис EC2.
- Запустите новый экземпляр. Выберите тип экземпляра, подходящий для вашего проекта. Например, t2.micro или t4g.small на бесплатном уровне — идеальный вариант для начинающих.
- Выберите операционную систему. Для работы с Selenium рекомендуется использовать Amazon Linux 2 или Ubuntu.
- Настройте параметры безопасности. Убедитесь, что ваш экземпляр имеет необходимые права, включая доступ по SSH и разрешения для использования Интернета.
Шаг 2: Установка необходимых библиотек
После создания экземпляра вам нужно будет подключиться к нему через SSH и установить необходимые зависимости:
# Обновление списка пакетов
sudo apt update
# Установка Python и pip
sudo apt install python3 python3-pip
# Установка необходимых библиотек
pip3 install pandas selenium
Также вам потребуется установить веб-драйвер для Chromium:
# Установка Google Chrome
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt install -f
# Установка ChromeDriver
wget https://chromedriver.storage.googleapis.com/<version>/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
sudo mv chromedriver /usr/local/bin/
Шаг 3: Настройка автоматического выполнения скрипта
Для того чтобы выполнять ваш скрипт автоматически каждый день, вам понадобится использовать cron
:
-
Откройте crontab для редактирования:
crontab -e
-
Добавьте строку в crontab, чтобы скрипт запускался каждый день в заданное время. Например, чтобы запустить ваш скрипт в 2:00 ночи:
0 2 * * * /usr/bin/python3 /path/to/your_script.py
Альтернативный подход: AWS Lambda с EC2
Если вы хотите более сложное решение, вы можете рассмотреть возможность комбинирования AWS Lambda и EC2. Это позволит вам запускать скрипт на EC2 каждый день по расписанию, создавая экземпляр и останавливая его после выполнения задачи.
- Создайте Lambda-функцию. В этой функции вы можете использовать AWS SDK (boto3) для запуска и остановки вашего EC2 экземпляра.
- Настройте триггер для Lambda из службы CloudWatch, чтобы запускать Lambda функцию в определённое время каждый день.
Использование AWS Resource Scheduler
Ещё одним инструментом является AWS Resource Scheduler. Эта служба позволяет вам автоматически останавливать и запускать экземпляры EC2 по заданному расписанию. Вы можете настроить теги для ваших экземпляров и задать расписание через интерфейс AWS.
Заключение
Запуск вашего кода на Python каждый день без необходимости держать компьютер включённым — это реальная задача, которую можно легко решить с помощью AWS. Использование EC2 с настройкой cron является наиболее простым и оптимальным способом, который обеспечивает гибкость и контроль, позволяя вам использовать все требуемые библиотеки, включая Selenium и Pandas.
Если вы ищете более сложные решения, AWS Lambda с комбинацией EC2 или AWS Resource Scheduler могут оказаться полезными инструментами. Выбор подхода зависит от ваших предпочтений, бюджета и требований к проекту.