Collect the finish times of every finisher of the Wineglass Marathon (Corning, New York) for each year whose results Leone Timing posts as a web page. Start from the year's page at https://www.leonetiming.com/YEAR/Roads/Wineglass/ for YEAR from 2018 to 2025; some years have no page (there was no race in 2020). On each year's page, follow the link to the marathon results by net time (not the half marathon, not the relay).

Rules: send a user agent that identifies the request as "AEM 6850 class demo; <address>"; at most one request per second; save every page you fetch in cache/ and never fetch the same page twice; if the server answers 429, wait and retry. The pages list runners' names, ages and towns: keep only place, sex, age group and net time, and never print or save names, even while you study a page's layout.

Write wineglass.csv with one row per finisher and the columns year, place, sex, age_group, net_time (h:mm:ss) and net_minutes. Draw wineglass.png: the number of finishers in each one-minute bin of net time from 2:30 to 6:30, all years together, with vertical lines at 3:00, 3:30, 4:00 and 4:30. Draw wineglass_years.png: the number of finishers and the median net time, by year.

When you are done, print: for each year, the number of rows you kept and the last place number on that year's page; the number of finishers at 3:57, 3:58, 3:59, 4:00, 4:01 and 4:02 (minutes, all years); and the median net time by year.

Use R.
