1
0
Fork
You've already forked auto-ru
0
No description
  • Go 90.6%
  • Go Template 9.1%
  • Makefile 0.3%
2026年07月08日 18:58:56 +03:00
modules Новый селектор для описания 2025年07月15日 13:04:04 +03:00
templates Логи в кеш 2025年02月28日 15:22:13 +03:00
.gitignore Переименование репозитория 2025年04月06日 20:47:14 +03:00
config.yaml.example Прокси 2025年04月06日 21:19:54 +03:00
go.mod Новая версия 2025年04月08日 11:23:41 +03:00
go.sum Обновления и фиксы 2025年04月01日 15:58:38 +03:00
main.go Переименование репозитория 2025年04月06日 20:47:14 +03:00
Makefile Фикс Makefile 2025年04月07日 15:17:44 +03:00
README.md Readme 2026年07月08日 18:58:56 +03:00

AutoRU — Парсер объявлений auto.ru

AutoRU — это программа на Go для автоматического сбора объявлений о продаже автомобилей с сайта auto.ru. Она отслеживает новые объявления, фильтрует их по ключевым словам, извлекает номера телефонов продавцов и предоставляет веб-интерфейс для просмотра и выгрузки данных.

Возможности

  • Автоматический сбор объявлений — обходит страницы каталога (до 99 страниц) с помощью headless Chrome.
  • Фильтрация по ключевым словам — проверяет описание каждого объявления на вхождение заданных пользователем слов.
  • Извлечение телефонов — получает номер продавца через внутреннее API auto.ru (мобильный эндпоинт).
  • Дедупликация — уже обработанные объявления повторно не собираются.
  • Веб-панель — интерфейс на Bootstrap для управления ключевыми словами и скачивания CSV.
  • Экспорт в CSV — выгрузка собранных данных за выбранный период в кодировке Windows-1251.
  • Поддержка прокси — возможность указать SOCKS5-прокси для обхода блокировок.
  • Режимы работыprod (парсер + веб-сервер) и local (только веб-сервер).

Как это работает

  1. Парсер открывает страницу каталога auto.ru через headless Chrome (chromedp).
  2. Собирает ссылки на все объявления на странице.
  3. Переходит по каждой ссылке и читает описание автомобиля.
  4. Если описание содержит хотя бы одно из заданных ключевых слов (регистронезависимо), отправляет POST-запрос к мобильному API auto.ru для получения телефона продавца.
  5. Сохраняет данные (ссылку, имя продавца, телефон) в SQLite.
  6. Циклически переходит к следующей странице и повторяет процесс (до 99 страниц, затем начинает заново).

Технологии

Компонент Технология
Язык Go 1.24
Веб-фреймворк Gin
Headless-браузер chromedp
Парсинг HTML goquery
База данных SQLite (GORM)
Конфигурация cleanenv (YAML)
UI Bootstrap 5.2

Установка и запуск

Требования

  • Go 1.24+
  • Google Chrome или Chromium
  • (Опционально) SOCKS5-прокси

Быстрый старт

# 1. Склонировать репозиторий
git clone https://codeberg.org/adikalon-work/auto-ru
cd auto-ru
# 2. Создать конфигурационный файл
cp config.yaml.example config.yaml
# 3. Настроить config.yaml (см. раздел Конфигурация)
# 4. Запустить миграцию базы данных
make migrate
# 5. Запустить приложение
make run

После запуска откройте http://localhost:3000.

Команды Makefile

make build # Собрать бинарник
make run # Собрать и запустить
make migrate # Собрать и выполнить миграции БД

Конфигурация

Файл config.yaml:

port:3000# Порт веб-сервераenv: local # Режим:"local"(только веб) или "prod" (парсер + веб)proxy:socks5://localhost:8080 # SOCKS5-прокси (оставьте пустым, если не нужен)

Использование

Веб-интерфейс

Маршрут Описание
GET / Главная страница с формой ключевых слов и формой выгрузки CSV
POST /keys Сохранить ключевые слова для фильтрации
POST /download Скачать CSV с данными за выбранный период

Ключевые слова указываются через запятую (например: битый, не бьтый, после дтп).

Парсер

В режиме prod парсер запускается в фоновом потоке сразу после старта сервера. Он работает в бесконечном цикле, проходя страницы с 1 по 99. При ошибке делает паузу на 5 секунд и продолжает.

Для миграции базы данных используйте флаг -m:

./auto-ru -m

Структура проекта

auto-ru/
├── main.go # Точка входа
├── config.yaml # Конфигурация (не в git)
├── config.yaml.example # Пример конфигурации
├── Makefile # Команды сборки
├── go.mod / go.sum # Go-модули
├── modules/
│ ├── config/
│ │ ├── config.go # Вспомогательные константы
│ │ └── yaml.go # Загрузчик YAML-конфига
│ ├── database/
│ │ └── database.go # Слой работы с SQLite
│ ├── logger/
│ │ └── logger.go # Логирование с кэшированием в БД
│ ├── migrate/
│ │ └── migrate.go # Автомиграция схемы БД
│ ├── models/
│ │ ├── cache.go # Модель кэша (ключ-значение)
│ │ ├── data.go # Модель собранных данных
│ │ └── parsed.go # Модель обработанных ссылок
│ ├── parser/
│ │ ├── parser.go # Ядро парсера
│ │ └── helper.go # Вспомогательные функции
│ ├── structures/
│ │ └── seller.go # Структуры JSON-ответа API
│ └── web/
│ ├── web.go # Настройка веб-сервера
│ └── controller.go # HTTP-обработчики
└── templates/
 └── index.tmpl # HTML-шаблон

Примечания

  • Парсер требует установленного Chrome/Chromium в системе.
  • Для снижения риска блокировки рекомендуется использовать SOCKS5-прокси.
  • Все данные хранятся локально в файле database.db.