Can't Scrape Rugby League Stats

Describe the problem.

Hi All. I'm making my own rugby league database for fun and was hoping to scrape data from the NRL website. When I do a preview of the table of stats I get want to comes up but then when I scrape and export i only get the Table headings.

Url: Raiders v Warriors - Round 1, 2025 - Match Centre | NRL.com

That's my root site.

Then I created a selectorlink to click on Players Stats (Halfway down the page)

Then a selectortable to select the table of player stats at the bottom of the page.

The preview seems to work but then just the headers after scrape and export

*I would appreciate any help (My IT skills are beginner)

Thanks AL

Hi,

Can you share the sitemap, please?

Hi. Thanks for helping

I couldn't find a sitemap for my specific game URL (Raiders vs Warriors) but for parent website (www.NRL.com.au) i found this site map with a google search. Not sure if that helps. I'm a beginner to IT language

Sitemap:

https://www.google.com/url?sa=t&source=web&rct=j&opi=89978449&url=https://www.nrl.com/sitemap/current.xml.gz

Sorry maybe this is what you looking for

{"_id":"WarriorsTable","startUrl":["https://www.nrl.com/draw/nrl-premiership/2025/round-1/raiders-v-warriors/"],"selectors":[{"id":"Player stats","parentSelectors":["_root"],"type":"SelectorLink","selector":"a.is-active","multiple":false,"linkType":"linkFromHref"},{"id":"Table","parentSelectors":["Player stats"],"type":"SelectorTable","multiple":true,"selector":".is-floating table","tableDataRowSelector":"tr.table-tbody__tr","tableHeaderRowSelector":"thead tr:nth-of-type(2)","columns":[{"extract":true,"header":"Player","name":"Player"},{"extract":true,"header":"Number","name":"Number"},{"extract":true,"header":"Position","name":"Position"},{"extract":true,"header":"Mins Played","name":"Mins Played"},{"extract":true,"header":"Points","name":"Points"},{"extract":true,"header":"Tries","name":"Tries"},{"extract":true,"header":"Conversions","name":"Conversions"},{"extract":true,"header":"Conversion Attempts","name":"Conversion Attempts"},{"extract":true,"header":"Penalty Goals","name":"Penalty Goals"},{"extract":true,"header":"Goal Conversion Rate","name":"Goal Conversion Rate"},{"extract":true,"header":"1 Point Field Goals","name":"1 Point Field Goals"},{"extract":true,"header":"2 Point Field Goals","name":"2 Point Field Goals"},{"extract":true,"header":"Total Points","name":"Total Points"},{"extract":true,"header":"All Runs","name":"All Runs"},{"extract":true,"header":"All Run Metres","name":"All Run Metres"},{"extract":true,"header":"Kick Return Metres","name":"Kick Return Metres"},{"extract":true,"header":"Post Contact Metres","name":"Post Contact Metres"},{"extract":true,"header":"Line Breaks","name":"Line Breaks"},{"extract":true,"header":"Line Break Assists","name":"Line Break Assists"},{"extract":true,"header":"Try Assists","name":"Try Assists"},{"extract":true,"header":"Line Engaged Runs","name":"Line Engaged Runs"},{"extract":true,"header":"Tackle Breaks","name":"Tackle Breaks"},{"extract":true,"header":"Hit Ups","name":"Hit Ups"},{"extract":true,"header":"Play The Ball","name":"Play The Ball"},{"extract":true,"header":"Average Play The Ball Speed","name":"Average Play The Ball Speed"},{"extract":true,"header":"Dummy Half Runs","name":"Dummy Half Runs"},{"extract":true,"header":"Dummy Half Run Metres","name":"Dummy Half Run Metres"},{"extract":true,"header":"One on One Steal","name":"One on One Steal"},{"extract":true,"header":"Offloads","name":"Offloads"},{"extract":true,"header":"Dummy Passes","name":"Dummy Passes"},{"extract":true,"header":"Passes","name":"Passes"},{"extract":true,"header":"Receipts","name":"Receipts"},{"extract":true,"header":"Passes To Run Ratio","name":"Passes To Run Ratio"},{"extract":true,"header":"Tackle Efficiency","name":"Tackle Efficiency"},{"extract":true,"header":"Tackles Made","name":"Tackles Made"},{"extract":true,"header":"Missed Tackles","name":"Missed Tackles"},{"extract":true,"header":"Ineffective Tackles","name":"Ineffective Tackles"},{"extract":true,"header":"Intercepts","name":"Intercepts"},{"extract":true,"header":"Kicks Defused","name":"Kicks Defused"},{"extract":true,"header":"Kicks","name":"Kicks"},{"extract":true,"header":"Kicking Metres","name":"Kicking Metres"},{"extract":true,"header":"Forced Drop Outs","name":"Forced Drop Outs"},{"extract":true,"header":"Bomb Kicks","name":"Bomb Kicks"},{"extract":true,"header":"Grubbers","name":"Grubbers"},{"extract":true,"header":"40/20","name":"4020"},{"extract":true,"header":"20/40","name":"2040"},{"extract":true,"header":"Cross Field Kicks","name":"Cross Field Kicks"},{"extract":true,"header":"Kicked Dead","name":"Kicked Dead"},{"extract":true,"header":"Errors","name":"Errors"},{"extract":true,"header":"Handling Errors","name":"Handling Errors"},{"extract":true,"header":"One on One Lost","name":"One on One Lost"},{"extract":true,"header":"Penalties","name":"Penalties"},{"extract":true,"header":"Ruck Infringements","name":"Ruck Infringements"},{"extract":true,"header":"Inside 10 Metres","name":"Inside 10 Metres"},{"extract":true,"header":"On Report","name":"On Report"},{"extract":true,"header":"Sin Bins","name":"Sin Bins"},{"extract":true,"header":"Send Offs","name":"Send Offs"},{"extract":true,"header":"Stint One","name":"Stint One"},{"extract":true,"header":"Stint Two","name":"Stint Two"}]}]}

Hi,

Please check if this provides the required outcome:

{"_id":"WarriorsTable","startUrl":["https://www.nrl.com/draw/nrl-premiership/2025/round-1/raiders-v-warriors/"],"selectors":[{"clickActionType":"real","clickElementSelector":"a[aria-controls='tabs-match-centre-4']","clickElementUniquenessType":"uniqueText","clickType":"clickOnce","delay":2000,"discardInitialElements":"discard-when-click-element-exists","id":"Player stats","multiple":true,"parentSelectors":["_root"],"selector":"body","type":"SelectorElementClick"},{"columns":[{"extract":true,"header":"Player","name":"Player"},{"extract":true,"header":"Number","name":"Number"},{"extract":true,"header":"Position","name":"Position"},{"extract":true,"header":"Mins Played","name":"Mins Played"},{"extract":true,"header":"Points","name":"Points"},{"extract":true,"header":"Tries","name":"Tries"},{"extract":true,"header":"Conversions","name":"Conversions"},{"extract":true,"header":"Conversion Attempts","name":"Conversion Attempts"},{"extract":true,"header":"Penalty Goals","name":"Penalty Goals"},{"extract":true,"header":"Goal Conversion Rate","name":"Goal Conversion Rate"},{"extract":true,"header":"1 Point Field Goals","name":"1 Point Field Goals"},{"extract":true,"header":"2 Point Field Goals","name":"2 Point Field Goals"},{"extract":true,"header":"Total Points","name":"Total Points"},{"extract":true,"header":"All Runs","name":"All Runs"},{"extract":true,"header":"All Run Metres","name":"All Run Metres"},{"extract":true,"header":"Kick Return Metres","name":"Kick Return Metres"},{"extract":true,"header":"Post Contact Metres","name":"Post Contact Metres"},{"extract":true,"header":"Line Breaks","name":"Line Breaks"},{"extract":true,"header":"Line Break Assists","name":"Line Break Assists"},{"extract":true,"header":"Try Assists","name":"Try Assists"},{"extract":true,"header":"Line Engaged Runs","name":"Line Engaged Runs"},{"extract":true,"header":"Tackle Breaks","name":"Tackle Breaks"},{"extract":true,"header":"Hit Ups","name":"Hit Ups"},{"extract":true,"header":"Play The Ball","name":"Play The Ball"},{"extract":true,"header":"Average Play The Ball Speed","name":"Average Play The Ball Speed"},{"extract":true,"header":"Dummy Half Runs","name":"Dummy Half Runs"},{"extract":true,"header":"Dummy Half Run Metres","name":"Dummy Half Run Metres"},{"extract":true,"header":"One on One Steal","name":"One on One Steal"},{"extract":true,"header":"Offloads","name":"Offloads"},{"extract":true,"header":"Dummy Passes","name":"Dummy Passes"},{"extract":true,"header":"Passes","name":"Passes"},{"extract":true,"header":"Receipts","name":"Receipts"},{"extract":true,"header":"Passes To Run Ratio","name":"Passes To Run Ratio"},{"extract":true,"header":"Tackle Efficiency","name":"Tackle Efficiency"},{"extract":true,"header":"Tackles Made","name":"Tackles Made"},{"extract":true,"header":"Missed Tackles","name":"Missed Tackles"},{"extract":true,"header":"Ineffective Tackles","name":"Ineffective Tackles"},{"extract":true,"header":"Intercepts","name":"Intercepts"},{"extract":true,"header":"Kicks Defused","name":"Kicks Defused"},{"extract":true,"header":"Kicks","name":"Kicks"},{"extract":true,"header":"Kicking Metres","name":"Kicking Metres"},{"extract":true,"header":"Forced Drop Outs","name":"Forced Drop Outs"},{"extract":true,"header":"Bomb Kicks","name":"Bomb Kicks"},{"extract":true,"header":"Grubbers","name":"Grubbers"},{"extract":true,"header":"40/20","name":"4020"},{"extract":true,"header":"20/40","name":"2040"},{"extract":true,"header":"Cross Field Kicks","name":"Cross Field Kicks"},{"extract":true,"header":"Kicked Dead","name":"Kicked Dead"},{"extract":true,"header":"Errors","name":"Errors"},{"extract":true,"header":"Handling Errors","name":"Handling Errors"},{"extract":true,"header":"One on One Lost","name":"One on One Lost"},{"extract":true,"header":"Penalties","name":"Penalties"},{"extract":true,"header":"Ruck Infringements","name":"Ruck Infringements"},{"extract":true,"header":"Inside 10 Metres","name":"Inside 10 Metres"},{"extract":true,"header":"On Report","name":"On Report"},{"extract":true,"header":"Sin Bins","name":"Sin Bins"},{"extract":true,"header":"Send Offs","name":"Send Offs"},{"extract":true,"header":"Stint One","name":"Stint One"},{"extract":true,"header":"Stint Two","name":"Stint Two"}],"id":"Table","multiple":true,"parentSelectors":["Player stats"],"selector":"#player-stats table","tableDataRowSelector":"tr.table-tbody__tr","tableHeaderRowSelector":"thead tr:nth-of-type(2)","type":"SelectorTable"}]}

Thanks JanAp

It's half worked. It's scraped all the players from both teams Twice. And it's collected some of the stats; Points, Tries, conversions, conversions attempts, offloads, passes, receipts, tackle efficiency, ineffective tackles, intercepts, kicks, grubbers, errors, handling errors, penalties, ruck infringements

Appreciate your help.Thanks

I see, please check the sitemap below with a few adjustments:

{"_id":"WarriorsTable","startUrl":["https://www.nrl.com/draw/nrl-premiership/2025/round-1/raiders-v-warriors/"],"selectors":[{"clickActionType":"real","clickElementSelector":"a[aria-controls='tabs-match-centre-4']","clickElementUniquenessType":"uniqueText","clickType":"clickOnce","delay":2000,"discardInitialElements":"discard-when-click-element-exists","id":"Player stats","multiple":true,"parentSelectors":["_root"],"selector":"body","type":"SelectorElementClick"},{"clickActionType":"real","clickElementSelector":"button.toggle-group__item","clickElementUniquenessType":"uniqueText","clickType":"clickOnce","delay":2000,"discardInitialElements":"do-not-discard","id":"click","multiple":true,"parentSelectors":["Player stats"],"selector":"_parent_","type":"SelectorElementClick"},{"columns":[{"extract":true,"header":"Player","name":"Player"},{"extract":true,"header":"Number","name":"Number"},{"extract":true,"header":"Position","name":"Position"},{"extract":true,"header":"Mins Played","name":"Mins Played"},{"extract":true,"header":"Points","name":"Points"},{"extract":true,"header":"Tries","name":"Tries"},{"extract":true,"header":"Conversions","name":"Conversions"},{"extract":true,"header":"Conversion Attempts","name":"Conversion Attempts"},{"extract":true,"header":"Penalty Goals","name":"Penalty Goals"},{"extract":true,"header":"Goal Conversion Rate","name":"Goal Conversion Rate"},{"extract":true,"header":"1 Point Field Goals","name":"1 Point Field Goals"},{"extract":true,"header":"2 Point Field Goals","name":"2 Point Field Goals"},{"extract":true,"header":"Total Points","name":"Total Points"},{"extract":true,"header":"All Runs","name":"All Runs"},{"extract":true,"header":"All Run Metres","name":"All Run Metres"},{"extract":true,"header":"Kick Return Metres","name":"Kick Return Metres"},{"extract":true,"header":"Post Contact Metres","name":"Post Contact Metres"},{"extract":true,"header":"Line Breaks","name":"Line Breaks"},{"extract":true,"header":"Line Break Assists","name":"Line Break Assists"},{"extract":true,"header":"Try Assists","name":"Try Assists"},{"extract":true,"header":"Line Engaged Runs","name":"Line Engaged Runs"},{"extract":true,"header":"Tackle Breaks","name":"Tackle Breaks"},{"extract":true,"header":"Hit Ups","name":"Hit Ups"},{"extract":true,"header":"Play The Ball","name":"Play The Ball"},{"extract":true,"header":"Average Play The Ball Speed","name":"Average Play The Ball Speed"},{"extract":true,"header":"Dummy Half Runs","name":"Dummy Half Runs"},{"extract":true,"header":"Dummy Half Run Metres","name":"Dummy Half Run Metres"},{"extract":true,"header":"One on One Steal","name":"One on One Steal"},{"extract":true,"header":"Offloads","name":"Offloads"},{"extract":true,"header":"Dummy Passes","name":"Dummy Passes"},{"extract":true,"header":"Passes","name":"Passes"},{"extract":true,"header":"Receipts","name":"Receipts"},{"extract":true,"header":"Passes To Run Ratio","name":"Passes To Run Ratio"},{"extract":true,"header":"Tackle Efficiency","name":"Tackle Efficiency"},{"extract":true,"header":"Tackles Made","name":"Tackles Made"},{"extract":true,"header":"Missed Tackles","name":"Missed Tackles"},{"extract":true,"header":"Ineffective Tackles","name":"Ineffective Tackles"},{"extract":true,"header":"Intercepts","name":"Intercepts"},{"extract":true,"header":"Kicks Defused","name":"Kicks Defused"},{"extract":true,"header":"Kicks","name":"Kicks"},{"extract":true,"header":"Kicking Metres","name":"Kicking Metres"},{"extract":true,"header":"Forced Drop Outs","name":"Forced Drop Outs"},{"extract":true,"header":"Bomb Kicks","name":"Bomb Kicks"},{"extract":true,"header":"Grubbers","name":"Grubbers"},{"extract":true,"header":"40/20","name":"4020"},{"extract":true,"header":"20/40","name":"2040"},{"extract":true,"header":"Cross Field Kicks","name":"Cross Field Kicks"},{"extract":true,"header":"Kicked Dead","name":"Kicked Dead"},{"extract":true,"header":"Errors","name":"Errors"},{"extract":true,"header":"Handling Errors","name":"Handling Errors"},{"extract":true,"header":"One on One Lost","name":"One on One Lost"},{"extract":true,"header":"Penalties","name":"Penalties"},{"extract":true,"header":"Ruck Infringements","name":"Ruck Infringements"},{"extract":true,"header":"Inside 10 Metres","name":"Inside 10 Metres"},{"extract":true,"header":"On Report","name":"On Report"},{"extract":true,"header":"Sin Bins","name":"Sin Bins"},{"extract":true,"header":"Send Offs","name":"Send Offs"},{"extract":true,"header":"Stint One","name":"Stint One"},{"extract":true,"header":"Stint Two","name":"Stint Two"}],"id":"table2","multiple":true,"parentSelectors":["click"],"selector":".is-floating table","tableDataRowSelector":"tr.table-tbody__tr","tableHeaderRowSelector":"thead tr:nth-of-type(2)","type":"SelectorTable"}]}
1 Like

Thanks JanAp

That helped. It got rid of the duplicates of players but only half the stats getting scrapped. Appreciate your help, i can probably work around this somehow. Thanks