Мне нравится автоматизировать рутинные задачи. Недавно я решил создать несколько парсеров для сбора данных с веб-сайтов, чтобы делиться новостями и статьями в социальных сетях. В этом мне помогал ИИ — современный инструмент, который пишет код быстрее, чем я успеваю сформулировать задачу. Однако в процессе я столкнулся с проблемой, которую ИИ не всегда замечает: постоянное потребление памяти WebDriver (например, Firefox через Selenium) даже в простое. Эта статья — мой рассказ о том, как ИИ ускоряет разработку, но почему неквалифицированным программистам вроде меня нужно быть внимательнее, чтобы замечать такие подводные камни.

Почему я выбрал ИИ для программирования

Как человек без глубоких знаний в разработке, я ценю ИИ за его способность создавать сложный код буквально за минуты. Хочешь парсер для новостного сайта? Задаёшь вопрос, указываешь, что нужно (например, Selenium для динамических страниц), и получаешь готовый скрипт с логированием, обработкой ошибок и даже комментариями. Для меня это как волшебство: я описываю задачу на русском, а ИИ выдаёт Python-код, который в 90% случаев работает с первого раза.

В моём случае я хотел написать два парсера:

  1. Один собирал статьи и видео с моего канала на Дзене для публикации в Telegram и ВКонтакте.
  2. Другой парсил новостные сайты, ища материалы с ключевыми словами вроде. Просто чтобы быть в курсе определенных событий.

Оба парсера использовали Selenium с Firefox в headless-режиме, чтобы обрабатывать динамический контент. ИИ быстро выдал рабочие скрипты, которые находили ссылки, проверяли даты и отправляли сообщения. Всё выглядело идеально — пока я не заметил, что сервер начал задыхаться.

Проблема, которую я обнаружил

Запустив парсеры на своём сервере (Ubuntu VPS), я стал следить за нагрузкой через htop — консольный инструмент, который рекомендую всем новичкам для мониторинга. К моему удивлению, даже когда парсеры спали (например, ждали следующей проверки через time.sleep), процессы firefox и geckodriver продолжали висеть в памяти, отъедая по 100–500 МБ на каждый экземпляр. Для одного парсера это терпимо, но два или три таких скрипта быстро заполняли RAM, особенно на скромном сервере.

Я понял, что проблема в WebDriver: Selenium держит браузер открытым, пока скрипт не вызовет driver.quit(). В моих скриптах WebDriver создавался один раз при старте и закрывался только при завершении программы. Во время сна (иногда по часу или до утра) он просто занимал память, не делая ничего полезного. Для опытного программиста это, очевидно, но я, в некотором смысле новичок, не сразу понял, где искать причину.

Почему ИИ не заметил проблему

Обратившись к ИИ с вопросом о чрезмерной нагрузке, я получил советы по оптимизации: уменьшить интервал проверок, ограничить количество ссылок, использовать requests вместо Selenium для статических страниц. Всё это полезно, но ни один из ответов не указал на проблему с WebDriver. Даже когда я явно спросил: "Почему Firefox ест память в простое?", ИИ сначала предложил снизить частоту запросов, а не закрывать браузер между циклами.

Это заставило меня задуматься: ИИ отлично кодирует, но он не всегда "думает" о ресурсах так, как человек, который следит за сервером. Он выдаёт решение, основанное на шаблонах и лучших практиках, но может упустить нюансы, которые важны в конкретной ситуации. В моём случае ИИ не увидел, что держать WebDriver в памяти между редкими проверками (раз в час) бессмысленно, особенно для парсера, который работает несколько секунд, а потом спит.

Мой конкретный случай

Возьмём один из моих парсеров — для Дзена. ИИ написал скрипт, который каждые 10 минут (позже я увеличил до часа) проверял новые статьи и видео. Код был элегантный: Selenium загружал страницу, находил ссылки, фильтровал их по дате и публиковал в соцсети. Но я заметил, что firefox постоянно висит в htop, даже когда скрипт спит. Лог-файлы тоже росли, но с этим я справился, добавив ротацию через TimedRotatingFileHandler.

Когда я указал ИИ на проблему с памятью, он предложил закрывать WebDriver после каждого цикла и создавать новый перед следующим. Это сработало: память освобождалась, а запуск браузера добавлял всего 1–2 секунды к циклу. Но мне пришлось явно задать вопрос и уточнить детали, чтобы получить это решение. Без моего замечания ИИ продолжал предлагать код с постоянным WebDriver’ом.

Второй парсер  — имел похожую проблему. Он парсил несколько сайтов, ища материалы по ключевым словам. ИИ написал сложную логику с обработкой дат, прокруткой страниц и уведомлениями в Telegram. Но опять же, WebDriver оставался в памяти. Когда я попросил синхронизировать парсеры (один в 00 минут часа, другой в 30 минут), ИИ добавил точное расписание, но только после моего вопроса про память предложил закрывать браузер.

Почему это проблема для новичков

Если вы, как и я, не профессиональный разработчик, то можете не знать, что:

  • Selenium держит браузер в памяти, пока не вызван driver.quit().
  • Процессы вроде firefox и geckodriver не исчезают сами по себе во время time.sleep.
  • Даже headless-режим потребляет сотни мегабайт RAM.

ИИ, выдавая готовый код, редко предупреждает о таких нюансах. Он ориентируется на функциональность: "Скрипт работает? Отлично!". Но для реального сервера важны ресурсы, особенно если вы запускаете несколько парсеров. Новичок может не заметить проблему, пока сервер не начнёт тормозить или логи не заполнят диск.

Как я решил проблему (и как можете вы)

Мой опыт показал, что ИИ — мощный помощник, но нужно задавать ему правильные вопросы. Вот что я сделал:

  1. Мониторинг: Использовал htop, чтобы увидеть, какие процессы едят память. Это помогло понять, что firefox висит без дела.
  2. Чёткие вопросы ИИ: Вместо "оптимизируй код" я спросил: "Как закрыть Firefox во время сна, чтобы он не ел память?" Это дало точное решение — driver.quit() после цикла и init_driver() перед новым.
  3. Итерации: Я несколько раз уточнял задачу, добавляя детали (например, расписание в 00 или 30 минут часа). ИИ адаптировал код, но только когда я указывал, что нужно.
  4. Проверка логов: Логи помогли понять, что парсер делает и почему ничего не публикует (например, из-за фильтра по дате или старых ссылок).

Для других новичков мой совет:

  • Следите за ресурсами: Используйте htop или top, чтобы видеть, что происходит на сервере.
  • Задавайте ИИ конкретные вопросы: Не просто "сделай парсер", а "сделай парсер, который закрывает браузер после работы".
  • Проверяйте код: Даже если ИИ выдаёт рабочий скрипт, читайте его. Ищите, где создаётся WebDriver и где он закрывается.
  • Итеративный подход: Если что-то не так (например, сервер тормозит), описывайте проблему ИИ максимально подробно. Он найдёт решение, но ему нужно знать, что искать.

Почему ИИ не всегда видит проблему

ИИ обучается на огромных наборах кода и документации. Он знает, как писать парсеры, обрабатывать ошибки, работать с Selenium. Но у него есть ограничения:

  • Контекст: ИИ не "живёт" на вашем сервере и не видит его нагрузку. Он отвечает на основе текста запроса, а не реального окружения.
  • Шаблоны: ИИ склонен использовать стандартные подходы (например, держать WebDriver открытым для скорости), которые не всегда оптимальны для долгосрочных скриптов.
  • Отсутствие инициативы: ИИ редко предлагает оптимизации, о которых вы не спросили. Например, он не скажет "закрой WebDriver", пока вы не упомянете память.

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

Что дальше?

Мои парсеры теперь работают как часы:

  • Первый запускается в 10:00, 11:00, ..., 22:00, второй — в 9:30, 10:30, ..., 21:30 по Омску.
  • Firefox закрывается после каждого цикла, и память остаётся свободной.
  • Логи ротируются, чтобы не забивать диск.
  • Я получаю уведомления в Telegram, когда находятся новости с нужными словами.

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

Подходящий для подобный проектов облачный VPS сервер. Мой Дзен.