QDG Knowledge Base Read-only viewer QWebHub
general

Argentina Crawler - Stud Book Argentina

Version 1 · Created the Argentina crawler page with calendar and meeting HTML structures, commands, historical-month limitation, proxy finding, verification, and module changelog.

Historical version

Argentina Crawler - Stud Book Argentina

Last reviewed: 2026-08-08 AEST

Module identity

  • Country: Argentina
  • Program/source name: Stud Book Argentina
  • Adapter source ID: ar_stud_book
  • Python module: src\formcrawler\sources\ar\stud_book.py
  • Launcher: scripts\crawl_stud_book_argentina_results.bat
  • Discipline: Thoroughbred (T)
  • Racing jurisdiction code: ARG
  • ISO country code: AR
  • Allowed hosts: studbook.org.ar, www.studbook.org.ar

Scope and key pages

Page Route Artifact
Meetings calendar /reuniones?mes=MM&anio=YYYY Monthly meeting-calendar HTML
Meeting detail/results /reuniones/detalle/<meeting-id>/<YYYYMMDD>-<track-slug>-<meeting-number> One complete meeting-results HTML

The calendar is server-rendered and exposes public same-origin meeting-detail links. Future entries without a meeting-detail link are ignored. A detail URL can also be captured directly when it is already known.

Capture workflow

  1. Build the first day of each distinct requested month as the calendar control.
  2. Capture each distinct calendar month at most once within the range workflow.
  3. Validate that the returned HTML identifies the requested data-anio and data-mes.
  4. Extract only valid same-origin meeting-detail links.
  5. Filter meetings to the exact requested dates.
  6. Queue one complete meeting HTML artifact per published meeting.
  7. Store the meeting only when every listed race has a corresponding RESULTADOS section.

Every request uses the shared queue, persistent retries, 15-25-second host limiter, response-size control, circuit breaker, and kill switch.

Source and artifact data structure

Calendar HTML

The control page contains:

  • page-level REUNIONES content;
  • calendar elements marked with data-anio and data-mes;
  • zero or more meeting links matching the configured detail-route pattern.

Calendar target metadata contains compact date, year, and month values.

Meeting HTML

One source page contains the complete meeting and all listed races. Target metadata includes:

  • meeting_id;
  • meeting date as YYYYMMDD;
  • meeting_number;
  • meeting_slug;
  • track_slug.

The validator identifies listed races from elements such as id="r1", id="r2", and so on, and counts headings whose text is RESULTADOS. It also checks the displayed meeting date. The artifact uses page_type=meeting_results, capture_phase=post_race, and artifact_type=meeting_result_html.

C:\Users\Robert\project-data\FormCrawler\t-artifacts\<year>\ARG\ar_stud_book\<event>\
C:\Users\Robert\project-data\FormParser\inbox\T\<year>\ARG\ar_stud_book\<artifact-id>.json

Source-native operational labels include the Hipódromo name, complete race count, and meeting number when available.

How to run

Current-month or otherwise site-served range:

.\scripts\crawl_stud_book_argentina_results.bat 2026-08-01 2026-08-07

One-date, one-meeting smoke test:

.\scripts\crawl_stud_book_argentina_results.bat 2026-08-06 2026-08-06 1

Use a third value of 0 for discovery only. Rerun the same command without a limit to resume queued meetings.

Capture a known meeting URL directly:

python scripts\formcrawler.py capture `
  --source ar_stud_book `
  --url "https://www.studbook.org.ar/reuniones/detalle/<meeting-id>/<YYYYMMDD>-<meeting-slug>" `
  --capture-phase post_race `
  --artifact-type meeting_result_html

Known limitations and recovery

  • Historical month selection is protected by the site's interactive verification. Without that verification, the server can silently return the current month.
  • FormCrawler detects a returned-month mismatch and stops rather than reporting a misleading zero or bypassing the control.
  • Robert's Racing and Sports proxy was tested against the July 2026 calendar; it returned HTTP 200 but still contained the August 2026 fallback. The proxy therefore does not unlock historical calendar selection.
  • Current-month discovery and direct capture of known public meeting-detail URLs remain supported.
  • Four pre-fix artifacts labelled July 2026 actually contain the August fallback and must not be parsed: 82eb8fae2f74620aa3951cb0f548fff0, 890d652ac784747acfa634f8f3b72342, ed8d5aef503c4bbcf5c829cf181bfcb6, and b41f0a74e5078a8b920c7907504f82da. Cleanup remains pending explicit approval.
  • A partial meeting remains retryable until all race result sections are published.

Verification

On 2026-08-07, the 2026-08-06 August calendar capture stored 78,683 bytes and discovered the La Plata meeting. The 290,541-byte meeting artifact contained all 11 listed result sections. Both hashes and FormParser handoffs matched with zero failures. A July diagnostic subsequently proved that direct and proxied historical calendar requests returned the August fallback, leading to explicit month-mismatch validation.

Module changelog

2026-08-07 - Historical month correction

  • Corrected calendar parameters to the source form's mes and anio names.
  • Added returned-month identity validation so silent current-month fallbacks are rejected.
  • Documented the interactive-verification limitation and four affected pre-fix artifacts.
  • Tested Robert's proxy service and confirmed that it does not change the returned historical month.

2026-08-07 - Initial implementation

  • Added ar_stud_book with monthly HTML calendar discovery and exact date filtering.
  • Added one complete meeting HTML capture per published meeting.
  • Added readiness checks requiring one RESULTADOS section for every listed race.
  • Added monthly discovery caching, queue resume, target limits, discovery-only operation, and crawl_stud_book_argentina_results.bat.
  • Live-verified the La Plata 11-race meeting, SHA-256 values, and FormParser handoffs.
Updated by Codex on Aug. 7, 2026, 2:09 p.m. · Task: Create one FormCrawler wiki page per implemented country module