3.0 KiB
3.0 KiB
my_parser
Парсер офферов с kwork.ru и fl.ru с отправкой в Telegram и возможностью добавлять новые источники.
Что умеет
- запускается каждые
Xминут черезAPScheduler - читает настройки из
.env - забирает проекты
kwork.ruпо списку категорийfc - забирает проекты
fl.ruиз RSS-ленты - фильтрует офферы по ключевым словам
- фильтрует офферы по минимальной сумме
- не отправляет уже отправленные офферы повторно
- отправляет релевантные офферы в Telegram-канал через
aiogram
Запуск
- Создать и заполнить
.envпо примеру.env.example. - Установить зависимости:
pip install -r requirements.txt
- Запустить:
python main.py
Дополнительно можно задать MIN_PRICE_AMOUNT, чтобы пропускать только офферы с бюджетом не ниже указанного значения в рублях.
RSS fl.ru настраивается через FL_RSS_URL. По умолчанию используется https://www.fl.ru/rss/?category=5.
Для Telegram можно указать TELEGRAM_PROXY_URL, например socks5://user:pass@host:port или http://host:port.
Docker
Сборка образа:
docker build -t my-parser .
Запуск контейнера:
docker run --rm --env-file .env -v "$(pwd)/data:/app/data" my-parser
В образе используется multistage-сборка:
- на этапе
builderставятся зависимости в отдельныйvenv - на этапе
runtimeкопируются только готовое окружение и исходники
Это ускоряет пересборку, если меняется только код приложения, а requirements.txt остается прежним.
Структура
app/config.py- загрузка настроекapp/sources/base.py- базовый интерфейс источникаapp/sources/kwork.py- реализация источникаkworkapp/sources/fl.py- реализация RSS-источникаfl.ruapp/service.py- получение, фильтрация и отправка офферовapp/telegram.py- публикация сообщений в Telegramapp/state.py- хранение уже отправленных офферов
Как добавить новый сайт
- Создать новый класс в
app/sources/, унаследованный отOfferSource. - Реализовать в нем
fetch_offers()с возвратом спискаOffer. - Подключить источник в
main.py.