sobota, 5 października 2019

RWC 2019

Ze strony https://www.rugbyworldcup.com/teams/TEAM (gdzie TEAM = england, georgia itd) można ściągnąć dane każdej drużyny. Ja ściągnąłem 14 września wszystkie 20 stron dla 20 drużyn biorących udział w turnieju i się okazało po obejrzeniu pliku od środka, że w każdym jest explicite dołączony JavaSciptowy fragment zawierający dane dotyczące zawodników. (Teraz wygląda na to, że zmieniono sposób generowania stron i JavaScriptowej wstawki nie ma.)

Jeżeli chodzi o statystki meczów, to startową jest strona https://www.rugbyworldcup.com/matches, z której zwykłym grepem można wydłubać URLe do wszystkich 48 meczy. Ten plik zawiera też opisy meczów w formacie JS (kto gra z kim i kiedy), dzięki czemu można ściągnąć pliki dla poszczególnych meczów w bardziej cwany sposób. Ja zrobiłem skrypt w Perlu, który tworzy plik .sh ściągający wszystkie mecze:

## ściąga tylko mecz rozegrany TODAY
if [ "$TODAY" = "20190921" ]; then
echo 'Download: France-Argentina => France_Argentina_0921_25292_.html'
selenium_get_www_page.py 'https://www.rugbyworldcup.com/match/25292' > France_Argentina_0921_25292_.html
## wyciąga statystyki i zapisuje do pliku .csv
perl html2csv.pl -f France_Argentina_0921_25292_.html > France_Argentina_0921_25292_.csv
fi

Idea była taka żeby dodać plik do Crontaba na nafisie (czyli raspberry). Codziennie po południu by się odpalał i ściągał mecze rozegrana tego dnia. Plik HTML jest deklarowany jako xhtml i nawet jest poprawny (well-formed). Dzięki temu dość sprawnie udało mi się zrobić skrypt html2csv.pl, który wydłubuje wszystkie dane meczowe i dopisuje je do pliku w formacie CSV.

Przedostatnim krokiem jest uruchomienie skryptu R, który rysuje 6 wykresów słupkowych dla najważniejszych statystyk.

Ostatnim zaś krokiem wysyłanie tego co zrobił R na twittera (za pomocą tweepy, codziennie wieczorem).

Baza danych z RWC 2019 jest tutaj.

1 komentarz: