v0.1.0
First tagged release.
Engines: Playwright (recommended), Selenium, pyppeteer, and a browserless HTTP client via the 2Captcha Scraper API — same CLI, same parsing core, same JSON/CSV output.
Parsing: JSON-LD primary, CSS + URL-pattern fallback. Two-stage discount correction (tile prices overlaid on JSON-LD) recovers original_price/discount_pct on discounted listings.
Optional 2Captcha integrations: captcha solving (reCAPTCHA v3/v2, auto-reconciled against the site's own widget), the Scraping Browser API over --cdp-endpoint, proxies, and fingerprints — all optional, none required to run against a listing page.
Since the initial commit:
- Cross-page dedup by
sku(dedupe_by_skuinoutput_writer.py), wired into all three browser engines' pagination loop. diff_runs.py— diffs two JSON outputs bysku(added/removed/changed), for scheduled price/assortment monitoring..github/workflows/canary.yml— a daily live run against farfetch.com, since the maintestsworkflow is deliberately offline-only.pyproject.toml(installable viapip install .[playwright]etc.),tests/test_smoke.py(pytest entry point),Dockerfile/.dockerignore.
See README.md for full usage, flags, and exit codes.