Giter Site home page Giter Site logo

seleksi-2022-tugas-1's Introduction

Seleksi Warga Basdat 2022

Tugas 1 : Data Scraping & Data Storing

sumber data: chess.com

Logo chess.com

Daftar Isi

Deskripsi Data dan DBMS

Catur adalah salah satu cabang olahraga yang cukup digemari. Kini, bermain catur menjadi lebih praktis dengan adanya website chess.com. Segala informasi terkait catur tersedia sangat lengkap di dalamnya. Oleh karena itu, penulis memilih website ini sebagai sumber data. Data yang diambil dari chess.com ini adalah data 1000 pemain top dunia berdasarkan rating dari FIDE beserta rekaman pertandingan yang pernah dimainkan oleh pemain bernama Magnus Carlsen, pemegang Juara Dunia Catur saat ini, di tahun 2020 atau lebih.

Untuk menyimpan data tersebut, penulis memilih PostgreSQL sebagai DBMS. Hal ini karena PostgreSQL merupakan DBMS yang memiliki reputasi yang baik dan dapat diandalkan. Selain itu, PostgreSQL juga menyediakan alat yang memudahkan pengelolaan database.

Spesifikasi Program

Program data scraping pada proyek ini menggunakan bahasa Python dengan pustaka HTML parser yang umum dipakai untuk melakukan data scraping, yaitu Beautiful Soup.

Selain itu, terdapat sebuah API sederhana menggunakan pustaka FastAPI yang disediakan oleh Python.

Cara Menggunakan

Program

  1. Pastikan Python3 ter-install pada PC Anda. Jika tidak, silakan unduh Python3 di sini
  2. Pastikan PostgreSQL ter-install pada PC Anda. Jika tidak, silakan unduh PostgreSQL di sini
  3. Atur konfigurasi pada file .env di folder Data Scraping/src sesuai dengan lokasi database di PC anda.
  4. Buka folder Data Scraping/src di terminal.
  5. Jalankan perintah di bawah ini untuk mengunduh pustaka yang dibutuhkan.
pip install -r requirements.txt
  1. Jalankan perintah di bawah ini untuk menjalankan program scraping dan storing data
python main.py
  1. Akan diberikan beberapa pilihan menu yang dapat dilakukan.
[1] Scrape data pemain
[2] Scrape data pertandingan
[2] Store data pemain dari .json ke database
[3] Store data pertandingan dari .json ke database
  1. Jika anda memilih scrape data pertandingan, selanjutnya anda akan diminta beberapa masukan yang tidak harus diisi semua. Cukup diisi beberapa saja sesuai kemauan anda.
  2. Di akhir proses scraping, anda akan diberikan pilihan untuk menyimpan data ke dalam file .json dan/atau ke dalam database.
  3. File .json hasil scraping akan disimpan di dalam folder Data Scraping/data.
  4. Jika anda memilih store data, maka data akan disimpan ke dalam database. Namun, file .json harus sudah tersedia di dalam folder Data Scraping/data.

API

  1. Atur konfigurasi pada file .env di folder API/src sesuai dengan lokasi database di PC anda.
  2. Buka terminal lalu pindah ke direktori src di dalam folder API.
  3. Jalankan perintah di bawah ini untuk mengunduh pustaka yang dibutuhkan
pip install -r requirements.txt
  1. Jalankan perintah di bawah ini untuk menjalankan API di localhost:8000
uvicorn main:app --reload
  1. Buka browser dan akses localhost:8000, tambahkan /docs di akhir URL untuk memunculkan Swagger UI berisi method dan endpoints yang tersedia.

Berikut adalah daftar method dan endpoints yang tersedia:

GET /api/players                                    : mendapatkan seluruh data pemain
GET /api/players?name=<str>&nationality=<str>       : mendapatkan data pemain berdasarkan nama dan/atau kewarganegaraan
GET /api/players/{id}                               : mendapatkan data pemain berdasarkan id
GET /api/ratings                                    : mendapatkan seluruh data rating
GET /api/ratings/{rank}                             : mendapatkan data rating berdasarkan peringkat
GET /api/games                                      : mendapatkan seluruh data pertandingan
GEt /api/games?winner=<str>&moves=<int>&year=<int>  : mendapatkan data pertandingan berdasarkan hasil pertandingan, peringkat, dan tahun pelaksanaan

Struktur JSON

  1. players.json
{ 
  Rank: ranking FIDE pemain
  Name: nama pemain
  Title: gelar pemain
  Nationality: kewarganegaraan pemain
  Rating: rating pemain yang terdiri dari 3 jenis
  {
    Classic: rating catur klasik
    Rapid: rating catur cepat
    Blitz: rating catur kilat
  }
}
  1. games.json
{
  White: nama pemain putih
  Black: nama pemain hitam
  Notation: notasi langkah awal permainan
  Opening: pembukaan catur yang dimainkan
  Winner: pemain yang menang
  Moves: jumlah langkah
  Year: tahun dilaksanakannya pertandingan
}

Struktur Basis Data

Database Schema

Screenshot Program

  • Data Scraping Scraping Players Scraping Games
  • Data Storing Storing Players and Ratings Storing Games Players Table Ratings Table Games Table
  • API Swagger UI Players All Players with Parameters Players by Id Ratings All Ratings by Rank Games All Games with Parameters

Referensi

Pustaka

  • Beautiful Soup
  • Psycopg2
  • Python-dotenv
  • Fast API

Tautan

Author

Diky Restu Maulana
13520017
Teknik Informatika, Institut Teknologi Bandung

seleksi-2022-tugas-1's People

Contributors

andresjerriels avatar dikyrest avatar wargabasdat avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.