Deterministic swehockey.se schedule crawler
One HTTP GET per season, no browser: the page is server-rendered, so every row arrives in one response and the extraction becomes a pure function of the HTML. - layouts[] declares one profile per version of the site's table (modern and legacy), each identified by its header row, so a new version of the page is a new profile plus a fixture instead of a guess. - The table is located by header signature, not by a CSS path. - Every cell is shape-checked, and facts the site renders twice (desktop and mobile date, time in the tooltip) must agree. - Cross-field invariants: periods sum to the score, ids are unique, played games always have an event link and unplayed ones never do. - Output is sorted by date, time and id, so it does not inherit the site's row order, and it carries no fetch timestamp: same HTML, same bytes. - Drift is a typed error and exit code 3, with the header it actually found. - Tests run on committed HTML fixtures and golden JSON; TestLive is opt-in. Verified over the full SHL archive: 27/27 seasons, 2119 games, 1779 played.
This commit is contained in:
commit
6b701819ca
20 files changed
+2876
No files matched your search
Vendored
+46
@@ -0,0 +1,46 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head><meta charset="utf-8"><title>SHL | stats.swehockey.se</title></head>
|
||||
<body>
|
||||
<h1>SHL</h1>
|
||||
<div class="ad"><a href="/Ad/Object/99">annons</a></div>
|
||||
<div id="groupStandingResultContent" class="row"><table class="tblWrapper table table-borderless"><tr><td class="tdWrapper"><table class="tblBorderNoPad"><tr><td class="tdTblBorder"><table class="tblContent"><tr><th colspan="3" class="tdTitle"><h2>Schedule and Results</h2></th><th class="tdTitle d-none d-sm-table-cell" /><th class="tdTitle d-none d-md-table-cell" /><th colspan="2" class="tdTitleRight d-none d-sm-table-cell">
|
||||
Last update: 2026-09-26 22:41</th><th colspan="2" class="tdTitleRight d-table-cell d-sm-none" /></tr><tr><th class="tdHeader">Date</th><th class="tdHeader d-none d-sm-table-cell">Time</th><th class="tdHeader">Game</th><th class="tdHeader">Result</th><th class="tdHeader d-none d-sm-table-cell" /><th class="tdHeader d-none d-md-table-cell" style="text-align:right">Spectators</th><th class="tdHeader">Venue</th></tr><tr><td class="tdOdd standardPaddingTop d-none d-sm-table-cell">2026-09-19</td><td class="tdOdd standardPaddingTop d-table-cell d-sm-none"><bold>2026-09-19</bold><br />15:15</td><td class="tdOdd standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;"><div class="dateLink"><span href="#" class="lnkTooltip" title="90001001">15:15</span></div></td><td class="tdOdd standardPaddingTop">Frölunda HC
|
||||
-
|
||||
Växjö Lakers HC</td><td class="tdOdd standardPaddingTop" style="white-space: nowrap;"><a href="
 javascript:openonlinewindow('/Game/Events/1109941','')
 ">5 - 4</a></td><td class="tdOdd standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;">
|
||||
(1-1, 2-1, 2-2)
|
||||
</td><td class="tdOdd standardPaddingTop d-none d-md-table-cell" style="text-align: right">12044</td><td class="tdOdd standardPaddingTop">Scandinavium</td></tr><tr><td class="tdNormal standardPaddingTop d-table-cell d-sm-none">15:15</td><td class="tdNormal standardPaddingTop d-none d-sm-table-cell" /><td class="tdNormal standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;"><div class="dateLink"><span href="#" class="lnkTooltip" title="90001002">15:15</span></div></td><td class="tdNormal standardPaddingTop">HV 71
|
||||
-
|
||||
IF Malmö Redhawks</td><td class="tdNormal standardPaddingTop" style="white-space: nowrap;"><a href="
 javascript:openonlinewindow('/Game/Events/1109942','')
 ">4 - 5</a></td><td class="tdNormal standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;">
|
||||
(2-0, 1-3, 1-1, 0-1)
|
||||
</td><td class="tdNormal standardPaddingTop d-none d-md-table-cell" style="text-align: right">6800</td><td class="tdNormal standardPaddingTop">Husqvarna Garden</td></tr><tr><td class="tdOdd standardPaddingTop d-table-cell d-sm-none">15:15</td><td class="tdOdd standardPaddingTop d-none d-sm-table-cell" /><td class="tdOdd standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;"><div class="dateLink"><span href="#" class="lnkTooltip" title="90001003">15:15</span></div></td><td class="tdOdd standardPaddingTop">Linköping HC
|
||||
-
|
||||
Timrå IK</td><td class="tdOdd standardPaddingTop" style="white-space: nowrap;"><a href="
 javascript:openonlinewindow('/Game/Events/1109943','')
 ">3 - 2</a></td><td class="tdOdd standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;">
|
||||
(1-0, 2-2, 0-0)
|
||||
</td><td class="tdOdd standardPaddingTop d-none d-md-table-cell" style="text-align: right">7900</td><td class="tdOdd standardPaddingTop">Saab Arena</td></tr><tr><td class="tdNormal standardPaddingTop d-table-cell d-sm-none">18:00</td><td class="tdNormal standardPaddingTop d-none d-sm-table-cell" /><td class="tdNormal standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;"><div class="dateLink"><span href="#" class="lnkTooltip" title="90001004">18:00</span></div></td><td class="tdNormal standardPaddingTop">Djurgårdens IF
|
||||
-
|
||||
IF Björklöven</td><td class="tdNormal standardPaddingTop" style="white-space: nowrap;"><a href="
 javascript:openonlinewindow('/Game/Events/1109944','')
 ">0 - 3</a></td><td class="tdNormal standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;">
|
||||
(0-1, 0-1, 0-1)
|
||||
</td><td class="tdNormal standardPaddingTop d-none d-md-table-cell" style="text-align: right">14100</td><td class="tdNormal standardPaddingTop">Avicii Arena</td></tr><tr><td class="tdOdd standardPaddingTop d-table-cell d-sm-none">18:00</td><td class="tdOdd standardPaddingTop d-none d-sm-table-cell" /><td class="tdOdd standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;"><div class="dateLink"><span href="#" class="lnkTooltip" title="90001005">18:00</span></div></td><td class="tdOdd standardPaddingTop">Färjestad BK
|
||||
-
|
||||
Örebro HK</td><td class="tdOdd standardPaddingTop" style="white-space: nowrap;"><a href="
 javascript:openonlinewindow('/Game/Events/1109945','')
 ">7 - 0</a></td><td class="tdOdd standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;">
|
||||
(4-0, 2-0, 1-0)
|
||||
</td><td class="tdOdd standardPaddingTop d-none d-md-table-cell" style="text-align: right">8250</td><td class="tdOdd standardPaddingTop">Löfbergs Arena</td></tr><tr><td class="tdNormal standardPaddingTop d-table-cell d-sm-none">18:00</td><td class="tdNormal standardPaddingTop d-none d-sm-table-cell" /><td class="tdNormal standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;"><div class="dateLink"><span href="#" class="lnkTooltip" title="90001006">18:00</span></div></td><td class="tdNormal standardPaddingTop">Luleå HF
|
||||
-
|
||||
Rögle BK</td><td class="tdNormal standardPaddingTop" style="white-space: nowrap;"><a href="
 javascript:openonlinewindow('/Game/Events/1109946','')
 ">4 - 2</a></td><td class="tdNormal standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;">
|
||||
(0-2, 3-0, 1-0)
|
||||
</td><td class="tdNormal standardPaddingTop d-none d-md-table-cell" style="text-align: right">6150</td><td class="tdNormal standardPaddingTop">Coop Norrbotten Arena </td></tr><tr><td class="tdNormal paddingTop d-none d-sm-table-cell">2026-09-22</td><td class="tdNormal paddingTop d-table-cell d-sm-none"><bold>2026-09-22</bold><br />19:00</td><td class="tdNormal paddingTop d-none d-sm-table-cell" style="white-space: nowrap;"><div class="dateLink"><span href="#" class="lnkTooltip" title="90001008">19:00</span></div></td><td class="tdNormal paddingTop">Frölunda HC
|
||||
-
|
||||
Färjestad BK</td><td class="tdNormal paddingTop" style="white-space: nowrap;"><a href="
 javascript:openonlinewindow('/Game/Events/1109948','')
 ">3 - 2</a></td><td class="tdNormal paddingTop d-none d-sm-table-cell" style="white-space: nowrap;">
|
||||
(1-1, 0-1, 1-0, 0-0, 1-0)
|
||||
</td><td class="tdNormal paddingTop d-none d-md-table-cell" style="text-align: right">11449</td><td class="tdNormal paddingTop">Scandinavium</td></tr><tr><td class="tdOdd standardPaddingTop d-table-cell d-sm-none">19:00</td><td class="tdOdd standardPaddingTop d-none d-sm-table-cell" /><td class="tdOdd standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;"><div class="dateLink"><span href="#" class="lnkTooltip" title="90001009">19:00</span></div></td><td class="tdOdd standardPaddingTop">Linköping HC
|
||||
-
|
||||
Brynäs IF</td><td class="tdOdd standardPaddingTop" style="white-space: nowrap;"><a href="
 javascript:openonlinewindow('/Game/Events/1109949','')
 ">2 - 9</a></td><td class="tdOdd standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;">
|
||||
(0-2, 1-3, 1-4)
|
||||
</td><td class="tdOdd standardPaddingTop d-none d-md-table-cell" style="text-align: right">6812</td><td class="tdOdd standardPaddingTop">Saab Arena</td></tr><tr><td class="tdNormal paddingTop d-none d-sm-table-cell">2027-03-16</td><td class="tdNormal paddingTop d-table-cell d-sm-none"><bold>2027-03-16</bold><br />19:00</td><td class="tdNormal paddingTop d-none d-sm-table-cell" style="white-space: nowrap;"><div class="dateLink"><span href="#" class="lnkTooltip" title="90001367">19:00</span></div></td><td class="tdNormal paddingTop">Brynäs IF
|
||||
-
|
||||
Frölunda HC</td><td class="tdNormal paddingTop" colspan="1"> </td><td class="tdNormal paddingTop d-none d-sm-table-cell" /><td class="tdNormal paddingTop d-none d-md-table-cell" /><td class="tdNormal paddingTop">Monitor ERP Arena</td></tr><tr><td class="tdOdd standardPaddingTop d-table-cell d-sm-none">19:00</td><td class="tdOdd standardPaddingTop d-none d-sm-table-cell" /><td class="tdOdd standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;"><div class="dateLink"><span href="#" class="lnkTooltip" title="90001368">19:00</span></div></td><td class="tdOdd standardPaddingTop">HV 71
|
||||
-
|
||||
Färjestad BK</td><td class="tdOdd standardPaddingTop" colspan="1"> </td><td class="tdOdd standardPaddingTop d-none d-sm-table-cell" /><td class="tdOdd standardPaddingTop d-none d-md-table-cell" /><td class="tdOdd standardPaddingTop">Husqvarna Garden</td></tr></table></td></tr></table></td></tr></table></div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+277
@@ -0,0 +1,277 @@
|
||||
{
|
||||
"season_id": 20961,
|
||||
"layout": "modern",
|
||||
"title": "Schedule and Results",
|
||||
"last_update": "2026-09-26 22:41",
|
||||
"games": [
|
||||
{
|
||||
"game_id": "90001001",
|
||||
"event_id": "1109941",
|
||||
"date": "2026-09-19",
|
||||
"time": "15:15",
|
||||
"home": "Frölunda HC",
|
||||
"away": "Växjö Lakers HC",
|
||||
"home_goals": 5,
|
||||
"away_goals": 4,
|
||||
"periods": [
|
||||
{
|
||||
"label": "1",
|
||||
"home": 1,
|
||||
"away": 1
|
||||
},
|
||||
{
|
||||
"label": "2",
|
||||
"home": 2,
|
||||
"away": 1
|
||||
},
|
||||
{
|
||||
"label": "3",
|
||||
"home": 2,
|
||||
"away": 2
|
||||
}
|
||||
],
|
||||
"spectators": 12044,
|
||||
"venue": "Scandinavium"
|
||||
},
|
||||
{
|
||||
"game_id": "90001002",
|
||||
"event_id": "1109942",
|
||||
"date": "2026-09-19",
|
||||
"time": "15:15",
|
||||
"home": "HV 71",
|
||||
"away": "IF Malmö Redhawks",
|
||||
"home_goals": 4,
|
||||
"away_goals": 5,
|
||||
"periods": [
|
||||
{
|
||||
"label": "1",
|
||||
"home": 2,
|
||||
"away": 0
|
||||
},
|
||||
{
|
||||
"label": "2",
|
||||
"home": 1,
|
||||
"away": 3
|
||||
},
|
||||
{
|
||||
"label": "3",
|
||||
"home": 1,
|
||||
"away": 1
|
||||
},
|
||||
{
|
||||
"label": "4",
|
||||
"home": 0,
|
||||
"away": 1
|
||||
}
|
||||
],
|
||||
"spectators": 6800,
|
||||
"venue": "Husqvarna Garden"
|
||||
},
|
||||
{
|
||||
"game_id": "90001003",
|
||||
"event_id": "1109943",
|
||||
"date": "2026-09-19",
|
||||
"time": "15:15",
|
||||
"home": "Linköping HC",
|
||||
"away": "Timrå IK",
|
||||
"home_goals": 3,
|
||||
"away_goals": 2,
|
||||
"periods": [
|
||||
{
|
||||
"label": "1",
|
||||
"home": 1,
|
||||
"away": 0
|
||||
},
|
||||
{
|
||||
"label": "2",
|
||||
"home": 2,
|
||||
"away": 2
|
||||
},
|
||||
{
|
||||
"label": "3",
|
||||
"home": 0,
|
||||
"away": 0
|
||||
}
|
||||
],
|
||||
"spectators": 7900,
|
||||
"venue": "Saab Arena"
|
||||
},
|
||||
{
|
||||
"game_id": "90001004",
|
||||
"event_id": "1109944",
|
||||
"date": "2026-09-19",
|
||||
"time": "18:00",
|
||||
"home": "Djurgårdens IF",
|
||||
"away": "IF Björklöven",
|
||||
"home_goals": 0,
|
||||
"away_goals": 3,
|
||||
"periods": [
|
||||
{
|
||||
"label": "1",
|
||||
"home": 0,
|
||||
"away": 1
|
||||
},
|
||||
{
|
||||
"label": "2",
|
||||
"home": 0,
|
||||
"away": 1
|
||||
},
|
||||
{
|
||||
"label": "3",
|
||||
"home": 0,
|
||||
"away": 1
|
||||
}
|
||||
],
|
||||
"spectators": 14100,
|
||||
"venue": "Avicii Arena"
|
||||
},
|
||||
{
|
||||
"game_id": "90001005",
|
||||
"event_id": "1109945",
|
||||
"date": "2026-09-19",
|
||||
"time": "18:00",
|
||||
"home": "Färjestad BK",
|
||||
"away": "Örebro HK",
|
||||
"home_goals": 7,
|
||||
"away_goals": 0,
|
||||
"periods": [
|
||||
{
|
||||
"label": "1",
|
||||
"home": 4,
|
||||
"away": 0
|
||||
},
|
||||
{
|
||||
"label": "2",
|
||||
"home": 2,
|
||||
"away": 0
|
||||
},
|
||||
{
|
||||
"label": "3",
|
||||
"home": 1,
|
||||
"away": 0
|
||||
}
|
||||
],
|
||||
"spectators": 8250,
|
||||
"venue": "Löfbergs Arena"
|
||||
},
|
||||
{
|
||||
"game_id": "90001006",
|
||||
"event_id": "1109946",
|
||||
"date": "2026-09-19",
|
||||
"time": "18:00",
|
||||
"home": "Luleå HF",
|
||||
"away": "Rögle BK",
|
||||
"home_goals": 4,
|
||||
"away_goals": 2,
|
||||
"periods": [
|
||||
{
|
||||
"label": "1",
|
||||
"home": 0,
|
||||
"away": 2
|
||||
},
|
||||
{
|
||||
"label": "2",
|
||||
"home": 3,
|
||||
"away": 0
|
||||
},
|
||||
{
|
||||
"label": "3",
|
||||
"home": 1,
|
||||
"away": 0
|
||||
}
|
||||
],
|
||||
"spectators": 6150,
|
||||
"venue": "Coop Norrbotten Arena"
|
||||
},
|
||||
{
|
||||
"game_id": "90001008",
|
||||
"event_id": "1109948",
|
||||
"date": "2026-09-22",
|
||||
"time": "19:00",
|
||||
"home": "Frölunda HC",
|
||||
"away": "Färjestad BK",
|
||||
"home_goals": 3,
|
||||
"away_goals": 2,
|
||||
"periods": [
|
||||
{
|
||||
"label": "1",
|
||||
"home": 1,
|
||||
"away": 1
|
||||
},
|
||||
{
|
||||
"label": "2",
|
||||
"home": 0,
|
||||
"away": 1
|
||||
},
|
||||
{
|
||||
"label": "3",
|
||||
"home": 1,
|
||||
"away": 0
|
||||
},
|
||||
{
|
||||
"label": "4",
|
||||
"home": 0,
|
||||
"away": 0
|
||||
},
|
||||
{
|
||||
"label": "5",
|
||||
"home": 1,
|
||||
"away": 0
|
||||
}
|
||||
],
|
||||
"spectators": 11449,
|
||||
"venue": "Scandinavium"
|
||||
},
|
||||
{
|
||||
"game_id": "90001009",
|
||||
"event_id": "1109949",
|
||||
"date": "2026-09-22",
|
||||
"time": "19:00",
|
||||
"home": "Linköping HC",
|
||||
"away": "Brynäs IF",
|
||||
"home_goals": 2,
|
||||
"away_goals": 9,
|
||||
"periods": [
|
||||
{
|
||||
"label": "1",
|
||||
"home": 0,
|
||||
"away": 2
|
||||
},
|
||||
{
|
||||
"label": "2",
|
||||
"home": 1,
|
||||
"away": 3
|
||||
},
|
||||
{
|
||||
"label": "3",
|
||||
"home": 1,
|
||||
"away": 4
|
||||
}
|
||||
],
|
||||
"spectators": 6812,
|
||||
"venue": "Saab Arena"
|
||||
},
|
||||
{
|
||||
"game_id": "90001367",
|
||||
"date": "2027-03-16",
|
||||
"time": "19:00",
|
||||
"home": "Brynäs IF",
|
||||
"away": "Frölunda HC",
|
||||
"home_goals": null,
|
||||
"away_goals": null,
|
||||
"periods": [],
|
||||
"venue": "Monitor ERP Arena"
|
||||
},
|
||||
{
|
||||
"game_id": "90001368",
|
||||
"date": "2027-03-16",
|
||||
"time": "19:00",
|
||||
"home": "HV 71",
|
||||
"away": "Färjestad BK",
|
||||
"home_goals": null,
|
||||
"away_goals": null,
|
||||
"periods": [],
|
||||
"venue": "Husqvarna Garden"
|
||||
}
|
||||
]
|
||||
}
|
||||
Vendored
+39
@@ -0,0 +1,39 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head><meta charset="utf-8"><title>SHL | stats.swehockey.se</title></head>
|
||||
<body>
|
||||
<h1>SHL</h1>
|
||||
<div id="groupStandingResultContent" class="row"><table class="tblWrapper table table-borderless"><tr><td class="tdWrapper"><table class="tblBorderNoPad"><tr><td class="tdTblBorder"><table class="tblContent"><tr><th colspan="3" class="tdTitle"><h2>Schedule and Results</h2></th><th class="tdTitle d-none d-sm-table-cell" /><th class="tdTitle d-none d-md-table-cell" /><th colspan="2" class="tdTitleRight d-none d-sm-table-cell">
|
||||
Last update: 2019-05-02 22:02</th><th colspan="2" class="tdTitleRight d-table-cell d-sm-none" /></tr><tr><th class="tdHeader d-none d-sm-table-cell">Round</th><th class="tdHeader">Date</th><th class="tdHeader">Game</th><th class="tdHeader">Result</th><th class="tdHeader d-none d-sm-table-cell" /><th class="tdHeader d-none d-md-table-cell" style="text-align:right">Spectators</th><th class="tdHeader">Venue</th></tr><tr><td class="tdOdd paddingTop d-none d-sm-table-cell">8</td><td class="tdOdd paddingTop d-none d-sm-table-cell" style="white-space: nowrap;"><div class="dateLink"><span href="#" class="lnkTooltip" title="90002023">2019-03-30 15:15</span></div></td><td class="tdOdd paddingTop">Färjestad BK
|
||||
-
|
||||
HV 71<br /><i>Kvartsfinal 1</i></td><td class="tdOdd paddingTop" style="white-space: nowrap;"><a href="
 javascript:openonlinewindow('/Game/Events/423859','')
 ">3 - 2</a></td><td class="tdOdd paddingTop d-none d-sm-table-cell" style="white-space: nowrap;">
|
||||
(0-0, 0-1, 2-1, 0-0, 0-0, 1-0)
|
||||
</td><td class="tdOdd paddingTop d-none d-md-table-cell" style="text-align: right">8250</td><td class="tdOdd paddingTop">Löfbergs Arena</td></tr><tr><td class="tdNormal d-none d-sm-table-cell">
|
||||
|
||||
</td><td class="tdNormal standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;"><div class="dateLink"><span href="#" class="lnkTooltip" title="90002026">2019-03-30 18:00</span></div></td><td class="tdNormal standardPaddingTop">Luleå HF
|
||||
-
|
||||
Växjö Lakers HC<br /><i>Kvartsfinal 4</i></td><td class="tdNormal standardPaddingTop" style="white-space: nowrap;"><a href="
 javascript:openonlinewindow('/Game/Events/423862','')
 ">4 - 1</a></td><td class="tdNormal standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;">
|
||||
(1-0, 1-0, 2-1)
|
||||
</td><td class="tdNormal standardPaddingTop d-none d-md-table-cell" style="text-align: right">6150</td><td class="tdNormal standardPaddingTop">Coop Norrbotten Arena </td></tr><tr><td class="tdOdd d-none d-sm-table-cell">
|
||||
|
||||
</td><td class="tdOdd standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;"><div class="dateLink"><span href="#" class="lnkTooltip" title="90002024">2019-03-31 15:00</span></div></td><td class="tdOdd standardPaddingTop">Frölunda HC
|
||||
-
|
||||
IF Malmö Redhawks<br /><i>Kvartsfinal 2</i></td><td class="tdOdd standardPaddingTop" style="white-space: nowrap;"><a href="
 javascript:openonlinewindow('/Game/Events/423860','')
 ">4 - 1</a></td><td class="tdOdd standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;">
|
||||
(0-0, 3-1, 1-0)
|
||||
</td><td class="tdOdd standardPaddingTop d-none d-md-table-cell" style="text-align: right">6044</td><td class="tdOdd standardPaddingTop">Scandinavium</td></tr><tr><td class="tdNormal d-none d-sm-table-cell">
|
||||
|
||||
</td><td class="tdNormal standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;"><div class="dateLink"><span href="#" class="lnkTooltip" title="90002025">2019-03-31 15:00</span></div></td><td class="tdNormal standardPaddingTop">Djurgårdens IF
|
||||
-
|
||||
Skellefteå AIK<br /><i>Kvartsfinal 3</i></td><td class="tdNormal standardPaddingTop" style="white-space: nowrap;"><a href="
 javascript:openonlinewindow('/Game/Events/423861','')
 ">2 - 3</a></td><td class="tdNormal standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;">
|
||||
(0-0, 0-2, 2-1)
|
||||
</td><td class="tdNormal standardPaddingTop d-none d-md-table-cell" style="text-align: right">8094</td><td class="tdNormal standardPaddingTop">Hovet, Johanneshov</td></tr><tr><td class="tdNormal paddingTop d-none d-sm-table-cell">22</td><td class="tdNormal paddingTop d-none d-sm-table-cell" style="white-space: nowrap;"><div class="dateLink"><span href="#" class="lnkTooltip" title="90002053">2019-04-30 19:30</span></div></td><td class="tdNormal paddingTop">Frölunda HC
|
||||
-
|
||||
Djurgårdens IF<br /><i>Final</i></td><td class="tdNormal paddingTop" style="white-space: nowrap;"><a href="
 javascript:openonlinewindow('/Game/Events/423889','')
 ">6 - 2</a></td><td class="tdNormal paddingTop d-none d-sm-table-cell" style="white-space: nowrap;">
|
||||
(1-0, 3-0, 2-2)
|
||||
</td><td class="tdNormal paddingTop d-none d-md-table-cell" style="text-align: right">12044</td><td class="tdNormal paddingTop">Scandinavium</td></tr><tr><td class="tdOdd paddingTop d-none d-sm-table-cell">23</td><td class="tdOdd paddingTop d-none d-sm-table-cell" style="white-space: nowrap;"><div class="dateLink"><span href="#" class="lnkTooltip" title="90002054">2019-05-02 19:30</span></div></td><td class="tdOdd paddingTop">Djurgårdens IF
|
||||
-
|
||||
Frölunda HC<br /><i>Final</i></td><td class="tdOdd paddingTop" style="white-space: nowrap;"><a href="
 javascript:openonlinewindow('/Game/Events/423890','')
 ">2 - 6</a></td><td class="tdOdd paddingTop d-none d-sm-table-cell" style="white-space: nowrap;">
|
||||
(1-3, 0-1, 1-2)
|
||||
</td><td class="tdOdd paddingTop d-none d-md-table-cell" style="text-align: right">13850</td><td class="tdOdd paddingTop">Ericsson Globe</td></tr></table></td></tr></table></td></tr></table></div>
|
||||
</body>
|
||||
</html>
|
||||
Vendored
+203
@@ -0,0 +1,203 @@
|
||||
{
|
||||
"season_id": 20961,
|
||||
"layout": "legacy",
|
||||
"title": "Schedule and Results",
|
||||
"last_update": "2019-05-02 22:02",
|
||||
"games": [
|
||||
{
|
||||
"game_id": "90002023",
|
||||
"event_id": "423859",
|
||||
"round": "8",
|
||||
"date": "2019-03-30",
|
||||
"time": "15:15",
|
||||
"home": "Färjestad BK",
|
||||
"away": "HV 71",
|
||||
"home_goals": 3,
|
||||
"away_goals": 2,
|
||||
"periods": [
|
||||
{
|
||||
"label": "1",
|
||||
"home": 0,
|
||||
"away": 0
|
||||
},
|
||||
{
|
||||
"label": "2",
|
||||
"home": 0,
|
||||
"away": 1
|
||||
},
|
||||
{
|
||||
"label": "3",
|
||||
"home": 2,
|
||||
"away": 1
|
||||
},
|
||||
{
|
||||
"label": "4",
|
||||
"home": 0,
|
||||
"away": 0
|
||||
},
|
||||
{
|
||||
"label": "5",
|
||||
"home": 0,
|
||||
"away": 0
|
||||
},
|
||||
{
|
||||
"label": "6",
|
||||
"home": 1,
|
||||
"away": 0
|
||||
}
|
||||
],
|
||||
"spectators": 8250,
|
||||
"venue": "Löfbergs Arena"
|
||||
},
|
||||
{
|
||||
"game_id": "90002026",
|
||||
"event_id": "423862",
|
||||
"round": "8",
|
||||
"date": "2019-03-30",
|
||||
"time": "18:00",
|
||||
"home": "Luleå HF",
|
||||
"away": "Växjö Lakers HC",
|
||||
"home_goals": 4,
|
||||
"away_goals": 1,
|
||||
"periods": [
|
||||
{
|
||||
"label": "1",
|
||||
"home": 1,
|
||||
"away": 0
|
||||
},
|
||||
{
|
||||
"label": "2",
|
||||
"home": 1,
|
||||
"away": 0
|
||||
},
|
||||
{
|
||||
"label": "3",
|
||||
"home": 2,
|
||||
"away": 1
|
||||
}
|
||||
],
|
||||
"spectators": 6150,
|
||||
"venue": "Coop Norrbotten Arena"
|
||||
},
|
||||
{
|
||||
"game_id": "90002024",
|
||||
"event_id": "423860",
|
||||
"round": "8",
|
||||
"date": "2019-03-31",
|
||||
"time": "15:00",
|
||||
"home": "Frölunda HC",
|
||||
"away": "IF Malmö Redhawks",
|
||||
"home_goals": 4,
|
||||
"away_goals": 1,
|
||||
"periods": [
|
||||
{
|
||||
"label": "1",
|
||||
"home": 0,
|
||||
"away": 0
|
||||
},
|
||||
{
|
||||
"label": "2",
|
||||
"home": 3,
|
||||
"away": 1
|
||||
},
|
||||
{
|
||||
"label": "3",
|
||||
"home": 1,
|
||||
"away": 0
|
||||
}
|
||||
],
|
||||
"spectators": 6044,
|
||||
"venue": "Scandinavium"
|
||||
},
|
||||
{
|
||||
"game_id": "90002025",
|
||||
"event_id": "423861",
|
||||
"round": "8",
|
||||
"date": "2019-03-31",
|
||||
"time": "15:00",
|
||||
"home": "Djurgårdens IF",
|
||||
"away": "Skellefteå AIK",
|
||||
"home_goals": 2,
|
||||
"away_goals": 3,
|
||||
"periods": [
|
||||
{
|
||||
"label": "1",
|
||||
"home": 0,
|
||||
"away": 0
|
||||
},
|
||||
{
|
||||
"label": "2",
|
||||
"home": 0,
|
||||
"away": 2
|
||||
},
|
||||
{
|
||||
"label": "3",
|
||||
"home": 2,
|
||||
"away": 1
|
||||
}
|
||||
],
|
||||
"spectators": 8094,
|
||||
"venue": "Hovet, Johanneshov"
|
||||
},
|
||||
{
|
||||
"game_id": "90002053",
|
||||
"event_id": "423889",
|
||||
"round": "22",
|
||||
"date": "2019-04-30",
|
||||
"time": "19:30",
|
||||
"home": "Frölunda HC",
|
||||
"away": "Djurgårdens IF",
|
||||
"home_goals": 6,
|
||||
"away_goals": 2,
|
||||
"periods": [
|
||||
{
|
||||
"label": "1",
|
||||
"home": 1,
|
||||
"away": 0
|
||||
},
|
||||
{
|
||||
"label": "2",
|
||||
"home": 3,
|
||||
"away": 0
|
||||
},
|
||||
{
|
||||
"label": "3",
|
||||
"home": 2,
|
||||
"away": 2
|
||||
}
|
||||
],
|
||||
"spectators": 12044,
|
||||
"venue": "Scandinavium"
|
||||
},
|
||||
{
|
||||
"game_id": "90002054",
|
||||
"event_id": "423890",
|
||||
"round": "23",
|
||||
"date": "2019-05-02",
|
||||
"time": "19:30",
|
||||
"home": "Djurgårdens IF",
|
||||
"away": "Frölunda HC",
|
||||
"home_goals": 2,
|
||||
"away_goals": 6,
|
||||
"periods": [
|
||||
{
|
||||
"label": "1",
|
||||
"home": 1,
|
||||
"away": 3
|
||||
},
|
||||
{
|
||||
"label": "2",
|
||||
"home": 0,
|
||||
"away": 1
|
||||
},
|
||||
{
|
||||
"label": "3",
|
||||
"home": 1,
|
||||
"away": 2
|
||||
}
|
||||
],
|
||||
"spectators": 13850,
|
||||
"venue": "Ericsson Globe"
|
||||
}
|
||||
]
|
||||
}
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head><meta charset="utf-8"><title>SHL | stats.swehockey.se</title></head>
|
||||
<body>
|
||||
<h1>SHL</h1>
|
||||
<div id="groupStandingResultContent" class="row"><table class="tblWrapper table table-borderless"><tr><td class="tdWrapper"><table class="tblBorderNoPad"><tr><td class="tdTblBorder"><table class="tblContent"><tr><th colspan="3" class="tdTitle"><h2>Schedule and Results</h2></th><th class="tdTitle d-none d-sm-table-cell" /><th class="tdTitle d-none d-md-table-cell" /><th colspan="2" class="tdTitleRight d-none d-sm-table-cell">
|
||||
Last update: 2014-04-14 14:19</th><th colspan="2" class="tdTitleRight d-table-cell d-sm-none" /></tr><tr><th class="tdHeader d-none d-sm-table-cell">Round</th><th class="tdHeader">Date</th><th class="tdHeader">Game</th><th class="tdHeader">Result</th><th class="tdHeader d-none d-sm-table-cell" /><th class="tdHeader d-none d-md-table-cell" style="text-align:right">Spectators</th><th class="tdHeader">Venue</th></tr><tr><td class="tdOdd standardPaddingTop d-none d-sm-table-cell">1</td><td class="tdOdd standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;"><div class="dateLink"><span href="#" class="lnkTooltip" title="90011001">2014-03-10 19:00</span></div></td><td class="tdOdd standardPaddingTop">HV 71
|
||||
-
|
||||
Leksands IF<br /><i>Eighth final 1</i></td><td class="tdOdd standardPaddingTop" style="white-space: nowrap;"><a href="
 javascript:openonlinewindow('/Game/Events/205038','')
 ">4 - 2</a></td><td class="tdOdd standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;">
|
||||
(1-0, 1-1, 2-1)
|
||||
</td><td class="tdOdd standardPaddingTop d-none d-md-table-cell" style="text-align: right">6923</td><td class="tdOdd standardPaddingTop">Kinnarps Arena</td></tr><tr><td class="tdNormal d-none d-sm-table-cell">
|
||||
|
||||
</td><td class="tdNormal standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;"><div class="dateLink"><span href="#" class="lnkTooltip" title="90011002">2014-03-10 19:00</span></div></td><td class="tdNormal standardPaddingTop">Linköpings HC
|
||||
-
|
||||
MODO Hockey<br /><i>Eighth final 2</i></td><td class="tdNormal standardPaddingTop" style="white-space: nowrap;"><a href="
 javascript:openonlinewindow('/Game/Events/205039','')
 ">4 - 0</a></td><td class="tdNormal standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;">
|
||||
(1-0, 3-0, 0-0)
|
||||
</td><td class="tdNormal standardPaddingTop d-none d-md-table-cell" style="text-align: right">5853</td><td class="tdNormal standardPaddingTop">Cloetta Center</td></tr><tr><td class="tdOdd paddingTop d-none d-sm-table-cell">2</td><td class="tdOdd paddingTop d-none d-sm-table-cell" style="white-space: nowrap;"><div class="dateLink"><span href="#" class="lnkTooltip" title="90011003">2014-03-12 19:00</span></div></td><td class="tdOdd paddingTop">Leksands IF
|
||||
-
|
||||
HV 71<br /><i>Eighth final 1</i></td><td class="tdOdd paddingTop" style="white-space: nowrap;"><a href="
 javascript:openonlinewindow('/Game/Events/205040','')
 ">2 - 1</a></td><td class="tdOdd paddingTop d-none d-sm-table-cell" style="white-space: nowrap;">
|
||||
(0-1, 1-0, 1-0)
|
||||
</td><td class="tdOdd paddingTop d-none d-md-table-cell" style="text-align: right">6018</td><td class="tdOdd paddingTop">Tegera Arena</td></tr><tr><td class="tdNormal d-none d-sm-table-cell">
|
||||
|
||||
</td><td class="tdNormal standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;"><div class="dateLink"><span href="#" class="lnkTooltip" title="90011004">2014-03-12 19:00</span></div></td><td class="tdNormal standardPaddingTop">MODO Hockey
|
||||
-
|
||||
Linköpings HC<br /><i>Eighth final 2</i></td><td class="tdNormal standardPaddingTop" style="white-space: nowrap;"><a href="
 javascript:openonlinewindow('/Game/Events/205041','')
 ">4 - 5</a></td><td class="tdNormal standardPaddingTop d-none d-sm-table-cell" style="white-space: nowrap;">
|
||||
(2-0, 2-1, 0-3, 0-1)
|
||||
</td><td class="tdNormal standardPaddingTop d-none d-md-table-cell" style="text-align: right">5526</td><td class="tdNormal standardPaddingTop">Fjällräven Center</td></tr><tr><td class="tdOdd paddingTop d-none d-sm-table-cell">3</td><td class="tdOdd paddingTop d-none d-sm-table-cell" style="white-space: nowrap;"><div class="dateLink"><span href="#" class="lnkTooltip" title="90011005">2014-03-13 19:00</span></div></td><td class="tdOdd paddingTop">Leksands IF
|
||||
-
|
||||
HV 71<br /><i>Eighth final 1</i></td><td class="tdOdd paddingTop" style="white-space: nowrap;"><a href="
 javascript:openonlinewindow('/Game/Events/205042','')
 ">2 - 4</a></td><td class="tdOdd paddingTop d-none d-sm-table-cell" style="white-space: nowrap;">
|
||||
(0-3, 0-0, 2-1)
|
||||
</td><td class="tdOdd paddingTop d-none d-md-table-cell" style="text-align: right">6462</td><td class="tdOdd paddingTop">Tegera Arena</td></tr></table></td></tr></table></td></tr></table></div>
|
||||
</body>
|
||||
</html>
|
||||
+163
@@ -0,0 +1,163 @@
|
||||
{
|
||||
"season_id": 20961,
|
||||
"layout": "legacy",
|
||||
"title": "Schedule and Results",
|
||||
"last_update": "2014-04-14 14:19",
|
||||
"games": [
|
||||
{
|
||||
"game_id": "90011001",
|
||||
"event_id": "205038",
|
||||
"round": "1",
|
||||
"date": "2014-03-10",
|
||||
"time": "19:00",
|
||||
"home": "HV 71",
|
||||
"away": "Leksands IF",
|
||||
"home_goals": 4,
|
||||
"away_goals": 2,
|
||||
"periods": [
|
||||
{
|
||||
"label": "1",
|
||||
"home": 1,
|
||||
"away": 0
|
||||
},
|
||||
{
|
||||
"label": "2",
|
||||
"home": 1,
|
||||
"away": 1
|
||||
},
|
||||
{
|
||||
"label": "3",
|
||||
"home": 2,
|
||||
"away": 1
|
||||
}
|
||||
],
|
||||
"spectators": 6923,
|
||||
"venue": "Kinnarps Arena"
|
||||
},
|
||||
{
|
||||
"game_id": "90011002",
|
||||
"event_id": "205039",
|
||||
"round": "1",
|
||||
"date": "2014-03-10",
|
||||
"time": "19:00",
|
||||
"home": "Linköpings HC",
|
||||
"away": "MODO Hockey",
|
||||
"home_goals": 4,
|
||||
"away_goals": 0,
|
||||
"periods": [
|
||||
{
|
||||
"label": "1",
|
||||
"home": 1,
|
||||
"away": 0
|
||||
},
|
||||
{
|
||||
"label": "2",
|
||||
"home": 3,
|
||||
"away": 0
|
||||
},
|
||||
{
|
||||
"label": "3",
|
||||
"home": 0,
|
||||
"away": 0
|
||||
}
|
||||
],
|
||||
"spectators": 5853,
|
||||
"venue": "Cloetta Center"
|
||||
},
|
||||
{
|
||||
"game_id": "90011003",
|
||||
"event_id": "205040",
|
||||
"round": "2",
|
||||
"date": "2014-03-12",
|
||||
"time": "19:00",
|
||||
"home": "Leksands IF",
|
||||
"away": "HV 71",
|
||||
"home_goals": 2,
|
||||
"away_goals": 1,
|
||||
"periods": [
|
||||
{
|
||||
"label": "1",
|
||||
"home": 0,
|
||||
"away": 1
|
||||
},
|
||||
{
|
||||
"label": "2",
|
||||
"home": 1,
|
||||
"away": 0
|
||||
},
|
||||
{
|
||||
"label": "3",
|
||||
"home": 1,
|
||||
"away": 0
|
||||
}
|
||||
],
|
||||
"spectators": 6018,
|
||||
"venue": "Tegera Arena"
|
||||
},
|
||||
{
|
||||
"game_id": "90011004",
|
||||
"event_id": "205041",
|
||||
"round": "2",
|
||||
"date": "2014-03-12",
|
||||
"time": "19:00",
|
||||
"home": "MODO Hockey",
|
||||
"away": "Linköpings HC",
|
||||
"home_goals": 4,
|
||||
"away_goals": 5,
|
||||
"periods": [
|
||||
{
|
||||
"label": "1",
|
||||
"home": 2,
|
||||
"away": 0
|
||||
},
|
||||
{
|
||||
"label": "2",
|
||||
"home": 2,
|
||||
"away": 1
|
||||
},
|
||||
{
|
||||
"label": "3",
|
||||
"home": 0,
|
||||
"away": 3
|
||||
},
|
||||
{
|
||||
"label": "4",
|
||||
"home": 0,
|
||||
"away": 1
|
||||
}
|
||||
],
|
||||
"spectators": 5526,
|
||||
"venue": "Fjällräven Center"
|
||||
},
|
||||
{
|
||||
"game_id": "90011005",
|
||||
"event_id": "205042",
|
||||
"round": "3",
|
||||
"date": "2014-03-13",
|
||||
"time": "19:00",
|
||||
"home": "Leksands IF",
|
||||
"away": "HV 71",
|
||||
"home_goals": 2,
|
||||
"away_goals": 4,
|
||||
"periods": [
|
||||
{
|
||||
"label": "1",
|
||||
"home": 0,
|
||||
"away": 3
|
||||
},
|
||||
{
|
||||
"label": "2",
|
||||
"home": 0,
|
||||
"away": 0
|
||||
},
|
||||
{
|
||||
"label": "3",
|
||||
"home": 2,
|
||||
"away": 1
|
||||
}
|
||||
],
|
||||
"spectators": 6462,
|
||||
"venue": "Tegera Arena"
|
||||
}
|
||||
]
|
||||
}
|
||||
Vendored
+41
@@ -0,0 +1,41 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head><meta charset="utf-8"><title>SHL | stats.swehockey.se</title></head>
|
||||
<body>
|
||||
<h1>SHL</h1>
|
||||
<ul>
|
||||
<a href="/ScheduleAndResults/Live/20961" onclick="pageVisited('/ScheduleAndResults/Live/20961','SHL')" target="_self">SHL</a><a href="/ScheduleAndResults/Overview/20962" onclick="pageVisited('/ScheduleAndResults/Overview/20962','HockeyAllsvenskan')" target="_self">HockeyAllsvenskan</a><a href="/ScheduleAndResults/Schedule/21041" onclick="pageVisited('/ScheduleAndResults/Schedule/21041','Hockeyettan')" target="_self">Hockeyettan</a><a href="/ScheduleAndResults/Overview/21970" onclick="pageVisited('/ScheduleAndResults/Overview/21970','Svenska Universitetshockeyligan')" target="_self">Svenska Universitetshockeyligan</a><a href="/ScheduleAndResults/Schedule/19767" onclick="pageVisited('/ScheduleAndResults/Schedule/19767','Svenska Cupen U20')" target="_self">Svenska Cupen U20</a><a href="/ScheduleAndResults/Overview/20964" onclick="pageVisited('/ScheduleAndResults/Overview/20964','U20 Nationell')" target="_self">U20 Nationell</a>
|
||||
</ul>
|
||||
<select class="form-control form-control-sm" onchange="doNavigate(this)">
|
||||
<option id="/ScheduleAndResults/Live/20961" selected="selected" value="/ScheduleAndResults/Live/20961">2026-27</option>
|
||||
<option id="/ScheduleAndResults/Overview/18263" value="/ScheduleAndResults/Overview/18263">2025-26</option>
|
||||
<option id="/ScheduleAndResults/Overview/17556" value="/ScheduleAndResults/Overview/17556">2024-25</option>
|
||||
<option id="/ScheduleAndResults/Overview/15791" value="/ScheduleAndResults/Overview/15791">2023-24</option>
|
||||
<option id="/ScheduleAndResults/Overview/14296" value="/ScheduleAndResults/Overview/14296">2022-23</option>
|
||||
<option id="/ScheduleAndResults/Overview/13348" value="/ScheduleAndResults/Overview/13348">2021-22</option>
|
||||
<option id="/ScheduleAndResults/Overview/12267" value="/ScheduleAndResults/Overview/12267">2020-21</option>
|
||||
<option id="/ScheduleAndResults/Overview/10371" value="/ScheduleAndResults/Overview/10371">2019-20</option>
|
||||
<option id="/ScheduleAndResults/Overview/9820" value="/ScheduleAndResults/Overview/9820">2018-19</option>
|
||||
<option id="/ScheduleAndResults/Overview/9006" value="/ScheduleAndResults/Overview/9006">2017-18</option>
|
||||
<option id="/ScheduleAndResults/Overview/7978" value="/ScheduleAndResults/Overview/7978">2016-17</option>
|
||||
<option id="/ScheduleAndResults/Overview/6699" value="/ScheduleAndResults/Overview/6699">2015-16</option>
|
||||
<option id="/ScheduleAndResults/Overview/5995" value="/ScheduleAndResults/Overview/5995">2014-15</option>
|
||||
<option id="/ScheduleAndResults/Overview/4870" value="/ScheduleAndResults/Overview/4870">2013-14</option>
|
||||
<option id="/ScheduleAndResults/Schedule/3810" value="/ScheduleAndResults/Schedule/3810">2012-13</option>
|
||||
<option id="/ScheduleAndResults/Schedule/965" value="/ScheduleAndResults/Schedule/965">2011-12</option>
|
||||
<option id="/ScheduleAndResults/Overview/841" value="/ScheduleAndResults/Overview/841">2010-11</option>
|
||||
<option id="/ScheduleAndResults/Overview/9025" value="/ScheduleAndResults/Overview/9025">2009-10</option>
|
||||
<option id="/ScheduleAndResults/Overview/9053" value="/ScheduleAndResults/Overview/9053">2008-09</option>
|
||||
<option id="/ScheduleAndResults/Overview/9078" value="/ScheduleAndResults/Overview/9078">2007-08</option>
|
||||
<option id="/ScheduleAndResults/Overview/9142" value="/ScheduleAndResults/Overview/9142">2006-07</option>
|
||||
<option id="/ScheduleAndResults/Overview/9147" value="/ScheduleAndResults/Overview/9147">2005-06</option>
|
||||
<option id="/ScheduleAndResults/Overview/9150" value="/ScheduleAndResults/Overview/9150">2004-05</option>
|
||||
<option id="/ScheduleAndResults/Overview/9153" value="/ScheduleAndResults/Overview/9153">2003-04</option>
|
||||
<option id="/ScheduleAndResults/Overview/12153" value="/ScheduleAndResults/Overview/12153">2002-03</option>
|
||||
<option id="/ScheduleAndResults/Overview/12158" value="/ScheduleAndResults/Overview/12158">2001-02</option>
|
||||
<option id="/ScheduleAndResults/Overview/12173" value="/ScheduleAndResults/Overview/12173">2000-01</option>
|
||||
<option class="disabled font-weight-bold text-black" style="font-size:16px" disabled value="-1"> Cups</option>
|
||||
<hr />
|
||||
</select>
|
||||
</body>
|
||||
</html>
|
||||
Reference in new issue
Block a user