Skip to content

Repository files navigation

Go parser for products and prices

Парсер собирает товары и цены по категориям для lenta.com в серверном режиме:

  • выбор магазина по городу/адресу (-city);
  • обязательная работа через прокси (-proxy или -proxy-list);
  • ротация прокси + retry/backoff;
  • healthcheck пула прокси;
  • сбор из JSON API (без HTML-селекторов);
  • выгрузка в json, csv или сразу в оба формата (all);
  • service mode с endpoint'ами /health и /scrape.

Production run

go run ./cmd/parser \
  -proxy-list proxies.txt \
  -city "Москва" \
  -categories "молоко,хлеб" \
  -limit 20 \
  -max-retries 4 \
  -retry-base-ms 800 \
  -timeout-sec 30 \
  -format all \
  -out output/products.json

Proxy list format

# proxies.txt
http://user:pass@proxy-1.example.com:8080
http://user:pass@proxy-2.example.com:8080
http://user:pass@proxy-3.example.com:8080

Proxy healthcheck

go run ./cmd/parser \
  -proxy-list proxies.txt \
  -city "Москва" \
  -categories "молоко,хлеб" \
  -healthcheck-only

Service mode

go run ./cmd/parser \
  -proxy-list proxies.txt \
  -city "Москва" \
  -categories "молоко,хлеб" \
  -format all \
  -out output/products.json \
  -serve \
  -listen ":8080"

Endpoints:

  • GET /health - проверка состояния сервиса и прокси-пула
  • POST /scrape - запуск сбора и выгрузки в файл

Docker

docker build -t grocery-parser .
docker run --rm -p 8080:8080 \
  -v "$(pwd)/proxies.txt:/app/proxies.txt:ro" \
  -v "$(pwd)/output:/app/output" \
  grocery-parser \
  -proxy-list /app/proxies.txt \
  -city "Москва" \
  -categories "молоко,хлеб" \
  -format all \
  -out /app/output/products.json \
  -serve \
  -listen ":8080"

Output format

Каждая запись:

  • name - название товара
  • price - цена
  • url - ссылка на товар
  • category - категория, по которой товар попал в выгрузку

Notes

  • Некоторые магазины используют антибот-защиту. Для боевого запуска нужен стабильный proxy pool и регулярная замена невалидных прокси.
  • В коде используется обход JSON-структур и извлечение по множеству ключей (name/title, price/currentPrice/...) - это снижает зависимость от точной схемы ответа API.

parser-website

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages