JSON-LD on bikegear.in has incorrect/all-caps brand names (e.g. "ACERBIS Hemets",
full page titles as brand). Our BRANDS list has the correct clean names.
Changed priority: brandName (our list) > jsonLd.brand.name > fallback.
Applied to both standalone local scraper and server scraper.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
After the main scrape loop finishes, collects all products that had scrapeError
and retries them sequentially up to 3 times with a 2s pause between passes.
Updates the output in-place so recovered products count as successes.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Self-contained — all brands and scraper logic inlined, no project imports.
Only needs: npm install axios, then node bikegear-scraper.js.
Supports resume on Ctrl+C, saves bikegear_output.json in server-compatible format.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>