Зачем писать Python-скрипты с помощью ИИ
Python остается главным языком для автоматизации рутины: парсинг цен конкурентов, очистка таблиц Excel, переименование тысяч файлов, сбор статистики из API или рассылка уведомлений в Telegram.
В 2026 году для создания таких утилит больше не нужно помнить наизусть синтаксис десятков библиотек (aiohttp, pandas, BeautifulSoup4). Нейросети класса Claude 3.7 Sonnet и DeepSeek R1 способны с первого промпта сгенерировать готовый, типизированный и асинхронный скрипт с обработкой ошибок и логированием.
Ниже разобран пошаговый процесс: от составления инженерного промпта до запуска и решения частых проблем. Этот материал входит в задачный раздел «Как сделать» — смежные инструкции объясняют создание Telegram-бота с ИИ и разработку сайта с нейросетью.
Сравнение моделей для генерации Python-кода 2026
| Модель | Сильные стороны | Поддержка рассуждений (Reasoning) | Где использовать |
|---|---|---|---|
| Claude 3.7 Sonnet | Идеальная архитектура, строгая типизация, 0 синтаксических ошибок | Гибридный режим (Thinking Mode) | Сложные пайплайны, CLI-утилиты, интеграции с API |
| DeepSeek R1 | Высокая алгоритмическая глубина, отличная работа с математикой и парсингом | Полная цепочка рассуждений <think> | Парсеры, скрипты анализа данных, локальный запуск через Ollama |
| GPT-4o / o3-mini | Быстрый синтаксис, знание редких устаревших библиотек | Включено в модели o3 | Экспресс-скрипты, конвертация форматов |
Пошаговый алгоритм: создаем асинхронный парсер каталога
Разберем классическую задачу: сбор каталога товаров интернет-магазина (название, цена, ссылка) с пагинацией на 50 страниц и сохранением в файл prices_2026.csv.
Шаг 1. Формирование структурированного инженерного промпта
Чтобы модель не выдала примитивный синхронный цикл с time.sleep(), сформулируйте требования к архитектуре скрипта.

Шаблон эффективного промпта для Python-скрипта:
Role: Senior Python Engineer.
Задача: Напиши надежный асинхронный скрипт для сбора каталога товаров.
Технические требования:
1. Библиотеки: aiohttp, bs4 (BeautifulSoup), asyncio, csv, logging.
2. Контроль нагрузки: ограничь параллелизм до 5 одновременных запросов с помощью asyncio.Semaphore.
3. Структура данных: используй dataclass Product с полями title (str), price (int), url (str).
4. Защита от блокировок: добавь реалистичные заголовки User-Agent и Accept-Language.
5. Экспорт: сохранение данных в CSV с кодировкой utf-8-sig для корректного открытия в Excel.
6. Обработка ошибок: перехват ClientError и таймаутов без падения всего скрипта.
Шаг 2. Разбор и проверка сгенерированного кода
Модель сгенерирует модульный скрипт parser.py.

import asyncio
import aiohttp
import csv
import logging
from dataclasses import dataclass, asdict
from bs4 import BeautifulSoup
logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s")
@dataclass
class Product:
title: str
price: int
url: str
HEADERS = {
"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
"Accept-Language": "ru-RU,ru;q=0.9,en-US;q=0.8",
}
async def fetch_page(session: aiohttp.ClientSession, url: str, sem: asyncio.Semaphore) -> str | None:
async with sem:
try:
async with session.get(url, headers=HEADERS, timeout=aiohttp.ClientTimeout(total=15)) as response:
if response.status == 200:
return await response.text()
logging.warning(f"Ошибка статуса {response.status} для {url}")
return None
except Exception as e:
logging.error(f"Сбой при загрузке {url}: {e}")
return None
def parse_html(html: str) -> list[Product]:
soup = BeautifulSoup(html, "html.parser")
items = []
for card in soup.select(".product-card"):
title_el = card.select_one(".product-title")
price_el = card.select_one(".product-price")
link_el = card.select_one("a.product-link")
if title_el and price_el and link_el:
# Очистка цены от пробелов и валюты
raw_price = "".join(filter(str.isdigit, price_el.get_text()))
price = int(raw_price) if raw_price else 0
items.append(Product(
title=title_el.get_text(strip=True),
price=price,
url=link_el.get("href", "")
))
return items
async def main(base_url: str, total_pages: int, output_file: str):
sem = asyncio.Semaphore(5)
all_products = []
async with aiohttp.ClientSession() as session:
tasks = [fetch_page(session, f"{base_url}?page={page}", sem) for page in range(1, total_pages + 1)]
pages_html = await asyncio.gather(*tasks)
for html in pages_html:
if html:
all_products.extend(parse_html(html))
logging.info(f"Собрано {len(all_products)} товаров. Сохраняем в {output_file}...")
with open(output_file, mode="w", newline="", encoding="utf-8-sig") as f:
writer = csv.DictWriter(f, fieldnames=["title", "price", "url"])
writer.writeheader()
writer.writerows([asdict(p) for p in all_products])
logging.info("Готово! Данные успешно сохранены.")
if __name__ == "__main__":
asyncio.run(main("https://example.com/catalog", 50, "prices_2026.csv"))
Шаг 3. Запуск скрипта в терминале
Для запуска скрипта создайте виртуальное окружение и установите необходимые зависимости:
# Создание и активация окружения
python3 -m venv venv
source venv/bin/activate # На Windows: venv\Scripts\activate
# Установка библиотек
pip install aiohttp beautifulsoup4
# Запуск парсера
python3 parser.py

Шаг 4. Устранение ошибок и отладка (Debugging)
Если при запуске скрипта сервер возвращает ошибку (например, 403 Forbidden или ConnectionResetError), не пытайтесь угадывать причину вручную. Скопируйте traceback ошибки целиком и отправьте нейросети.

Типичные решения частых сбоев:
- Ошибка
403 Forbidden: Добавление полного комплекта браузерных заголовков (Sec-Ch-Ua,Referer) и снижение количества воркеров в семафоре с 10 до 3. - Пустой результат парсинга: Селекторы классов на сайте изменились. Откройте инспектор кода (DevTools $\to$ Elements) и передайте нейросети актуальный HTML-фрагмент карточки товара со словами: «Обнови селекторы функции parse_html под этот HTML».
- Блокировка по IP: Подключение пула прокси через параметр
proxy="http://user:pass@ip:port"вaiohttp.ClientSession.
4 правила безопасного использования ИИ для Python
- Никогда не выполняйте
eval()иexec(): ИИ иногда предлагает динамическое выполнение строк кода для парсинга формул — это создает уязвимость выполнения произвольного кода. - Изолируйте файловые операции: Если скрипт удаляет или переименовывает файлы, сначала запустите его в режиме
dry-run(вывод планируемых действий черезprint()без реального изменения файлов). - Храните токены в
.env: Для скриптов с Telegram-ботами или API-ключами используйте библиотекуpython-dotenv. - Фиксируйте версии библиотек: Всегда сохраняйте файл
requirements.txtкомандойpip freeze > requirements.txt, чтобы скрипт гарантированно запускался на других серверах.
Полезные разделы для углубления
- Изучите связку ИИ с консолью разработки в хабе Claude Code.
- Настройте запуск скриптов по расписанию и подключение к API через MCP-серверы.
- Автоматизируйте сложные пайплайны с помощью ИИ-агентов.
- Все практические инструкции собраны в хабе «Как сделать».