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 versionArgentina 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
- Build the first day of each distinct requested month as the calendar control.
- Capture each distinct calendar month at most once within the range workflow.
- Validate that the returned HTML identifies the requested
data-anioanddata-mes. - Extract only valid same-origin meeting-detail links.
- Filter meetings to the exact requested dates.
- Queue one complete meeting HTML artifact per published meeting.
- Store the meeting only when every listed race has a corresponding
RESULTADOSsection.
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
REUNIONEScontent; - calendar elements marked with
data-anioanddata-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
dateasYYYYMMDD; 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, andb41f0a74e5078a8b920c7907504f82da. 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
mesandanionames. - 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_bookwith monthly HTML calendar discovery and exact date filtering. - Added one complete meeting HTML capture per published meeting.
- Added readiness checks requiring one
RESULTADOSsection 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.