• Spare parts catalog parser with anti-bot protection and data normalization in PostgreSQL + diff updates

    19 hours ago
    • Desired budget up to 650.01 USD
    • Waiting for a performer...
  • Initial situation: in the supply department we maintain our own catalog of auto parts and replacements. The supplier publishes current prices, balances and applicability in a closed B2B catalog, where pages are rendered via JS, some requests go to XHR, there is an antibot (header checks, rate-limit, periodic CAPTCHA), and product cards change structure. We need a stable parser that regularly updates data and records changes so that we do not compare everything manually.

    Technical environment and introductions: Linux (Ubuntu 22.04), Python 3.11, PostgreSQL 15. Deployment in Docker Compose. Access to B2B via login-password and 2FA using a one-time code from email (IMAP access will be provided). We will provide proxies, but their quality varies. We store 2 description languages ​​(RU/EN), currencies may be different.

    What should happen: a service that, according to a schedule, collects categories and products from a B2B catalog, pulls the article, brand, name, prices by warehouse, balances, delivery times, applicability/analogues, links to images, characteristics (key-value) for each product, and also marks discontinued items. Data should be stored in PostgreSQL in a normalized schema with a history of changes (prices/remains) and the ability to upload to CSV.

    Execution steps:
    1) Source and protocol analysis: determine entry points, XHR endpoints, filter/pagination parameters, limits, request signatures, antibot behavior, retray strategies.
    2) Implementation of login and sessions: authorization, 2FA processing via IMAP, session storage, automatic renewal, secure storage of secrets via env.
    3) Data collection: crawling categories, pagination, collecting cards, loading images only when necessary (flag), extracting characteristics and analogues, normalizing currencies/units of measurement.
    4) Storage: PostgreSQL schema (minimum products, offers/warehouses, balances, prices-history, analogues, characteristics, media), migrations, indexes, upsert logic and diff updates.
    5) Stability: proxy rotation, speed limiting, backoff, blocking detection, switching to an alternative route (XHR vs HTML), detailed logs and execution metrics.
    6) Export and reports: CLI commands for exporting CSV by filters (brand, category, date), report on changes for the period (how many products have changed by price/remains).

    Restrictions:
    - CAPTCHA cannot be solved through external paid services. If a CAPTCHA appears, the parser's job is to correctly capture the event, switch proxy/pause, and continue without manual input as much as possible.
    - Site load: no more than 1 request per second per proxy, maximum 3 parallel workers.
    - Code without connection to the GUI, control via CLI and config.

    Measurable acceptance criteria:
    - A repeated run on a test set of 5 categories should collect at least 95% of the products found through the built-in search on the site (errors are allowed due to temporary blocking, but should be included in the report).
    - For 100 randomly selected products, the data in the database matches the website by article, brand, price and balance (we’ll check it manually using the list).
    - During the second run without changes, unnecessary duplicates are not created in the source and the history of prices/remains is not replenished.
    - Logs contain: the number of processed pages, products, errors by type, average response time, number of blocking/retrays.
    - Docker Compose lifts everything with one command, there is a README with launch instructions, environment variables and CLI examples.

    Preferred tools: Playwright (Python) for JS/anti-bot crawling + requests/httpx where possible; Alembic for migrations; structured logs (json).
Your offer

You have not submitted an offer for this order yet.
Click “Submit an offer” to send your offer.

Need a similar task?

If this project is close to your need, you can view ready services in the category or post your own task with the required budget, deadline and requirements.

The project «Spare parts catalog parser with anti-bot protection and data normalization in PostgreSQL + diff updates» can be used as a reference for your own brief: what should be done, what result is needed and what budget to set.