Med denne scraper kan du hente data fra Holdet.dk's managerspil.
Udvikleren bag scraperen er på ingen måde associeret med Holdet.dk og scraperen er udviklet som et hyggeprojekt.
På Holdet.dk findes der allerede en statistikside, hvor man bl.a. kan se spillervækst, trend og popularitetsprocent runde for runde. Disse tal er beregnet på baggrund af alle hold, der deltager i spillet. For de mere seriøse managerspillere er det imidlertid langt mere interessant at se på statistikker der er beregnet udelukkende på baggrund af hold fra præmiepuljen (eller dele heraf).
Det primære formål med denne scraper er derfor at beregne spillernes popularitetsprocent og anførerpopularitet udelukkende på baggrund af hold fra præmiepuljen (eller dele heraf).
Scraperen er primært bygget til Holdet.dk's fodboldspil og terminologien i outputtet fra scraperen stammer herfra. Den kan dog også hente data fra andre spil, fx Håndbold Manager, Golf Manager, Tour Manager, Motor Manager etc.
Uden et login på Holdet.dk kan man udelukkende se på andre manageres hold fra den aktive runde i et spil. Scraperen er derfor primært bygget med henblik på at scrape hold fra den aktive runde.
Ønsker man at scrape hold fra en tidligere runde vil man undervejs blive bedt om at logge ind på Holdet.dk med en bruger som har et guldhold i det pågældende spil. Scraper man hold fra en tidligere runde vil man desuden i outputtet opleve dummy-værdier for 'SpillerHold' og 'SpillerVærdi' da disse oplysninger ikke er tilgængelige for hold fra tidligere runder.
Scraping af hold fra tidligere runder kræver desuden brug af en Selenium webdriver og du vil derfor blive bedt om at downloade en chromedriver (link) og gemme den under [...]/Drivers/.
Scraper man hold fra den aktive runde kan man forvente en performance på ~10 min pr. 1.000 hold.
Scraper man hold fra en tidligere runde falder performance imidlertid til ~60 min pr. 1.000 hold, da dette kræver brug af en Selenium webdriver.
Importér pakker
import pandas as pd
import os
from holdetdk_scraper import HoldetScraper
Lav en scraper instans
scraper = HoldetScraper()
Få en liste over aktive spil
scraper.active_games
Vælg hvad du vil scrape ved at indstille parametrene game, round og top.
Du kan f.eks. hente data Top 100 hold i præmiepuljen for runde 1 i Premier Manager Efterår 2022 således:
table, teams = scraper.get_table_and_teams(game='Premier Manager Efterår 2022', round=1, top=100)
Du kan også tilfældigt udvalgte hold fra den aktive runde ved at sætte random_sample=True og round=0:
table, teams = scraper.get_table_and_teams(game='Premier Manager Efterår 2022', round=0, top=100, random_sample=True)
Hvis du henter hold fra den aktive runde, mens der er kampe i gang, kan du med fordel sætte table_from_previous_round=True.
Scraperen vil da returnere hold fra den aktive runde rangeret i forhold til deres placering i præmiepuljen ved afslutningen af den foregående runde. På den måde kan man eliminere risikoen for at der sker forskydninger i tabellen, mens scraperen kører, hvilket ellers potentielt ville kunne skaber unøjagtigheder eller dubletter.
table, teams = scraper.get_table_and_teams(game='Premier Manager Efterår 2022', round=0, top=100, table_from_previous_round=True)
Når du (som ovenfor) har gemt en tabel med hold i variablen teams kan du udregne popularitetsprocenter og anførerpopulariteter for de valgte splits således:
popularity = scraper.calc_popularity_table(teams_table=teams, splits = [100, 1000])
Du kan gemme outputtet i en Excel-fil således:
# lav en output-mappe såfremt den ikke allerede eksisterer
output_folder = os.path.abspath('') + '/Output'
if not os.path.exists(output_folder):
os.makedirs(output_folder)
# gem tabel, teams og popularitet i et Excel-ark
output_path = f'{output_folder}/{game}, Runde {str(table.at[0, "Runde"])}, Top {len(table)}.xlsx'
with pd.ExcelWriter(output_path) as writer:
table.to_excel(writer, sheet_name='Tabel', index=False)
teams.to_excel(writer, sheet_name='Hold', index=False)
popularity.to_excel(writer, sheet_name='Popularitet', index=False)