- Deskripsi Data dan DBMS
- Spesifikasi Program
- Cara Menggunakan
- Struktur JSON
- Struktur Basis Data
- Screenshot
- Referensi
- Penulis
- Lain-Lain
Pada permainan Counter Strike: Global Offensive (CS:GO), terdapat statistik tim dan pemain profesional selama mereka bertanding. Salah satu situs web yang mencatat statistik para pemain dan tim CS:GO adalah HLTV. Pada projek ini, penulis melakukan scraping situs web HLTV untuk mengambil statistik tersebut. Data statistik milik tim yang diambil, antara lain nama, negara asal, peringkat, pelatih, jumlah kemenangan, jumlah seri, jumlah kekalahan, jumlah kill, jumlah death, dan kill-death ratio. Sedangkan data statistik milik pemain yang diambil meliputi nickname, nama asli, negara asal, tim, rating, deaths per round, KAST (persentase pemain mendapatkan kill, assists, bertahan, atau traded), impact, damage per round rata-rata, kils per round, jumlah kill, persentase headshot, kill-death ratio, jumlah map yang sudah dimainkan.
Penulis memilih PostgreSQL sebagai DBMS untuk menyimpan data hasil scraping tersebut. Hal ini karena PostgreSQL merupakan DBMS relasional open-source yang memiliki reputasi yang baik serta cukup kaya dengan fitur. Selain itu, DBMS ini dapat di-deploy pada cloud platform, yaitu Heroku.
Program data scraping pada projek ini menggunakan bahasa Python dengan pustaka HTML parser yang umum dipakai untuk melakukan data scraping, yaitu Beautiful Soup. Di sisi lain, API dibuat menggunakan bahasa Go dengan framework Fiber. Selain itu, API menggunakan GORM sebagai pustaka Object-Relational Mapping (ORM).
- Pastikan Python3 dan PostgreSQL ter-install pada PC Anda. Jika tidak, silakan unduh Python3 di sini dan PostgreSQL di sini
- Buka command prompt lalu pindah ke direktori
srcdi dalam folderData Scraping - Jalankan perintah di bawah ini untuk mengunduh pustaka yang dibutuhkan
pip install -r requirements.txt
- Jalankan perintah di bawah ini untuk menjalankan
main.pydan memulai scrape
py main.py
- Pilih indeks tim yang akan di-scrape sesuai batas indeks yang tertera. Tunggu hingga program selesai melakukan scraping data. File JSON akan terbuat dalam folder
data - Untuk menyimpan data hasil scraping ke dalam basis data, jalankan perintah di bawah ini untuk menjalankan
store.py
py store.py
- Pilih opsi pertama jika ingin membuat file
config.iniuntuk konfigurasi basis data, sedangkan pilih opsi kedua fileconfig.inisudah tersedia dan ingin memasukkan data JSON ke dalam basis data tersebut
- Pastikan Go ter-install pada PC Anda. Jika tidak, silakan unduh Go di sini
- Buatlah file .env di dalam folder
apiuntuk menyimpan konfigurasi basis data yang sudah diisi data sebelumnya dengan contoh sebagai berikut:
DB_HOST= your_host
DB_NAME= your_name
DB_USER= your_user
DB_PASSWORD= your_password
DB_PORT= your_port
- Bukalah command prompt lalu pindah ke direktori
api - Jalankan perintah di bawah ini untuk menjalankan server melalui file
main.go
go run main.go
- Bukalah browser Anda dan pergi ke alamat
http://localhost:8000. Jika halaman tersebut menampilkan teks "Selamat datang!", server berhasil berjalan - Untuk mengakses data tambahkan path berikut:
/playeruntuk mengakses semua data pemain/player/:playerIduntuk mengakses data pemain berdasarkan id-nya, contohnya/player/1utnuk mengakses pemain dengan id 1/teamuntuk mengakses semua data tim/team/:teamIduntuk mengakses data tim berdasarkan id-nya, contohnya/team/1untuk mengakses tim dengan id 1
Gunakan Postman dengan metode GET untuk mendapatkan tampilan yang lebih bagus. API dan basis data juga telah di-deploy pada platform Heroku dan dapat diakses di sini
Data yang di-scrape akan disimpan dalam format JSON. Data pemain dan tim akan disimpan dalam dua buah file JSON berbeda. Berikut ini adalah struktur JSON untuk data pemain:
{
"players": [
{
"nickname": string,
"realname": string,
"country": string,
"age": integer,
"team": string,
"rating": float,
"dpr": float,
"kast": float,
"impact": float,
"adr": float,
"kpr": float,
"kills": integer,
"hsPercentage": float,
"deaths": float,
"kdRatio": float,
"mapsPlayed": integer
},
..
]
}
Berikut ini adalah struktur JSON untuk data tim:
{
"teams": [
{
"name": string,
"country": string,
"rank": integer,
"coach": string,
"wins": integer,
"draws": integer,
"losses": integer,
"kills": integer,
"deaths": integer,
"kdRatio": float
},
..
]
}
Pada basis data, terdapat empat tabel, yaitu Team, Player, TeamStats, dan PlayerStats dengan rincian di bawah ini. Kolom yang dicetak tebal merupakan primary key.
| Kolom | Tipe Data |
|---|---|
| team_id | INT |
| name | VARCHAR |
| country | VARCHAR |
| rank | INT |
| coach | VARCHAR |
| Kolom | Tipe Data |
|---|---|
| player_id | INT |
| nickname | VARCHAR |
| realname | VARCHAR |
| rank | INT |
| country | VARCHAR |
| age | INT |
| team_id | INT |
| Kolom | Tipe Data |
|---|---|
| teamstats_id | INT |
| win_count | INT |
| draw_count | INT |
| lose_count | INT |
| kill_count | INT |
| death_count | NUMERIC(3,2) |
| kd_ratio | INT |
| team_id | INT |
| Kolom | Tipe Data |
|---|---|
| playerstats_id | INT |
| rating | NUMERIC(3,2) |
| dpr | NUMERIC(3,2) |
| kast | NUMERIC(4,3) |
| impact | NUMERIC(3,2) |
| adr | NUMERIC(3,1) |
| kpr | NUMERIC(3,2) |
| kill_count | INT |
| hs_percentage | NUMERIC(4,3) |
| death_count | INT |
| kd_ratio | NUMERIC(3,2) |
| map_count | INT |
| player_id | INT |
TeamStats(team_id) -> Team(team_id)
PlayerStats(player_id) -> Player(player_id)
Player(team_id) -> Team(team_id)
Berikut beberapa screenshot program data scraping
- Beautiful Soup
- Psycopg2
- Fiber
- GORM
- https://blog.finxter.com/creating-reading-updating-a-config-file-with-python/
- https://dev.to/percoguru/getting-started-with-apis-in-golang-feat-fiber-and-gorm-2n34
Mohamad Daffa Argakoesoemah
13520118
Teknik Informatika, Institut Teknologi Bandung
Pada tabel Player, terdapat beberapa nickname pemain mengandung huruf selain alfabet latin. Oleh karena itu, jika Anda ingin melakukan query melalui psql (PostgreSQL terminal), ubahlah encoding pada psql dengan menjalankan perintah di bawah ini pada Command Prompt sebelum masuk ke dalam psql.
SET PGCLIENTENCODING=utf-8
chcp 65001
Selanjutnya, bukalah psql melalui jendela Command Prompt yang telah diubah encoding-nya.










