Программа Парсер Цен Api [LATEST]

Пользовательский запрос -> API (проверка кэша) -> [если данных нет] -> Очередь задач -> Воркер -> Сайт -> База данных -> API -> Ответ Языки и библиотеки | Язык | Библиотеки | Плюсы для парсинга цен | |------|------------|------------------------| | Python | BeautifulSoup4, Scrapy, Selenium, Playwright | Огромная экосистема, быстрая разработка | | Node.js | Puppeteer, Cheerio, Axios | Отличная работа с асинхронностью, нативная работа с JSON | | Go | Colly, chromedp | Высокая производительность, низкое потребление памяти |

return normalize_price(price) # убираем пробелы, заменяем запятую Предположим, мы используем FastAPI (Python) для простоты и производительности. Модели данных from pydantic import BaseModel from datetime import datetime class PriceRecord(BaseModel): product_id: str source_url: str price: float currency: str = "RUB" timestamp: datetime in_stock: bool Эндпоинты | Метод | URL | Описание | |-------|-----|----------| | GET | /api/v1/prices/product_id | Получить последнюю цену | | GET | /api/v1/prices/history/product_id?from=date&to=date | Исторические цены | | POST | /api/v1/parse/request | Запросить принудительный парсинг сейчас | | GET | /api/v1/products/search?query=...&min_price=... | Поиск товаров с фильтрацией по цене | Пример реализации (FastAPI) from fastapi import FastAPI, BackgroundTasks, HTTPException from redis import Redis import json app = FastAPI() cache = Redis() программа парсер цен api

@app.get("/price/product_id") async def get_price(product_id: str): # Сначала проверяем кэш (TTL 5 минут) cached = cache.get(f"price:product_id") if cached: return json.loads(cached) Пользовательский запрос -&gt