• Tidak ada hasil yang ditemukan

Pengolahan Data Covid-19 Pada Aplikasi Pedullilindungi

N/A
N/A
Protected

Academic year: 2021

Membagikan "Pengolahan Data Covid-19 Pada Aplikasi Pedullilindungi"

Copied!
79
0
0

Teks penuh

(1)

KERJA PRAKTIK – KI141330

Pengolahan Data Covid-19 Pada Aplikasi

Pedullilindungi

PT. Telekomunikasi Indonesia

Jl. Sisingamangaraja No.4, RT.2/RW.1, Selong, Kec.

Kby. Baru, Kota Jakarta Selatan, Daerah Khusus

Ibukota Jakarta 12110

Periode: 15 Juni 2020 – 1 September 2020

Oleh:

M Thalut Nadhil Q

05111740000143

Pembimbing Jurusan

Wahyu Suadi, S.Kom, M.Kom. Pembimbing Lapangan Ryan Andhika Perdana DEPARTEMEN INFORMATIKA

Fakultas Teknologi Informasi dan Komunikasi Institut Teknologi Sepuluh Nopember

(2)

ii

(3)

iii KERJA PRAKTIK – KI141330

Pengolahan Data Covid-19 Pada Aplikasi Pedullilindungi PT. Telekomunikasi Indonesia

Jl. Sisingamangaraja No.4, RT.2/RW.1, Selong, Kec. Kby. Baru, Kota Jakarta Selatan, Daerah Khusus

Ibukota Jakarta 12110

Periode: 15 Juni 2020 – 1 September 2020

Oleh:

M Thalut Nadhil Q

05111740000143

Pembimbing Jurusan

Wahyu Suadi, S.Kom, M.Kom. Pembimbing Lapangan Ryan Andhika Perdana DEPARTEMEN INFORMATIKA

Fakultas Teknologi Informasi dan Komunikasi Institut Teknologi Sepuluh Nopember

(4)

iv

(5)
(6)

vi

(7)

vii

Pengolahan Data Covid-19 Pada Aplikasi Pedullilindungi

Nama Mahasiswa : M Thalut Nadhil Q NRP : 05111740000143 Departemen : Informatika FTIK-ITS

Pembimbing Jurusan : Wahyu Suadi, S.Kom, M.Kom. ABSTRAK

PT. Telekomunikasi Indonesia merupakan salah satu perusahaan BUMN dan merupakan perusahaan informasi dan komunikasi serta penyedia jasa dan jaringan telekomunikasi secara lengkap di Indonesia. Dimana Telkom memiliki jumlah pelanggan telepon tetap sebanyak 15 juta dan pelanggan telepon seluler sebanyak

104 juta.

Covid-19 atau bisa kita sebut dengan Virus Corona ini muncul di Indonesia pada awal tahun 2020 dimana pandemi ini berdampak besar kepada seluruh aspek kehidupan di Indonesia. Agar kita bisa terhindar dari penyakit ini, tentu saja kita perlu menghindari tempat-tempat ramai dan selalu menjaga kebersihan.

Aplilkasi Pedulilindungi merupakan sebuah portal atau tempat yang menyediakan informasi apakah user/pengguna berada di tempat yang aman yang dilambangkan dengan zona hijau atau zona tidak aman yang dilambangkan dengan zona merah.

Dengan adanya aplikasi ini diperlukannya input dan pengolahan data yang benar sehingga aplikasi ini bisa berjalan dengan baik dan benar.

Kata kunci:

(8)

viii

KATAPENGANTAR

Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Esa karena atas berkat limpahan rahmat dan lindungan-Nya penulis dapat melaksanakan salah satu kewajiban sebagai mahasiswa Teknik Informatika ITS yaitu Kerja Praktik (KP).

Penulis menyadari masih terdapat banyak kekurangan baik dalam pelaksanaan kerja praktik maupun penyusunan buku laporan ini, namun kami berharap buku laporan ini dapat menambah wawasan pembaca dan dapat menjadi sumber referensi. Penulis mengharapkan kritik dan saran yang membangun untuk kesempurnaan penulisan buku laporan ini.

Melalui laporan ini penulis juga ingin menyampaikan rasa terima kasih kepada kepada orang-orang yang telah membantu dalam pelaksanaan kerja praktik hingga penyusunan laporan Kerja praktik baik secara lngsung maupun tidak langsung. Orang-orang tersebut antara lain adalah:

1. Orang tua penulis,

2. Bapak Wahyu Suadi, S.Kom, M.Kom. selaku dosen pembimbing kerja praktik yang telah membimbing penulis selama kerja praktik berlangsung.

3. Bapak Ary Mazharuddin, PhD selaku koordinator Kerja Praktik.

4. Pak Ryan Andhika Perdana selaku pembimbing lapangan selama kerja praktik yang telah memberikan bimbingan serta ilmunya kepada penulis.

Jakarta, September 2020

(9)

ix

(10)

x DAFTARISI

LEMBAR PENGESAHAN ... V ABSTRAK ... VII KATA PENGANTAR ... VIII DAFTAR ISI ... X DAFTAR GAMBAR ... XV DAFTAR TABEL ... XXI

BAB I PENDAHULUAN ... 1

1.1. LATAR BELAKANG ... 1

1.2. TUJUAN ... 2

1.3. MANFAAT ... 2

1.4. RUMUSAN PERMASALAHAN ... 3

1.5. LOKASI DAN WAKTU KERJA PRAKTIK ... 3

1.6. METODOLOGI KERJA PRAKTIK ... 3

1.7. SISTEMATIKA LAPORAN ... 6

BAB II PROFIL INSTANSI ... 8

2.1. PROFIL INSTANSI ... 8

2.2. PURPOSE, VISI, DAN MISI ... 10

BAB III TINJAUAN PUSTAKA... 12

3.1. APLIKASI MOBILE ... 12

3.2. APLIKASI WEB ... 12

3.3. JUPYTER NOTEBOOK ... 12

3.4. DBEAVER ... 12

3.5. STRUCTURE QUERY LANGUAGE ... 12

3.6. PYTHON ... 13

3.7. GOOGLE DATA STUDIO ... 13

(11)

xi

3.9. BEAUTIFUL SOUP ... 13

3.10. SELENIUM ... 14

3.11. SCRAPING ... 14

BAB IV PENGUMPULAN DATA ... 16

4.1. PENGGUNAAN BEAUTIFUL SOUP ... 16

4.1.1. Pada Kabupaten Bangka Barat ... 16

4.1.2. Pada Kabupaten Paser ... 18

4.1.3. Pada Kabupaten Purworejo ... 21

4.1.4. Pada Kabupaten Semarang ... 23

4.1.5. Pada Kota Pontianak ... 27

4.2. PENGGUNAAN SELENIUM ... 30

4.2.1. Pada Kabupaten Alor ... 30

4.2.2. Pada Kabupaten Ngawi ... 33

4.2.3. Pada Kabupaten Rokan Hulu ... 36

4.2.4. Pada Kabupaten Sleman ... 38

4.2.5. Pada Kabupaten Tapanuli Tengah ... 41

BAB V PEMBERSIHAN DAN PENGOLAHAN DATA ... 46

5.1. PEMBUATAN TABEL MONITORING COVID-19 ... 46

5.2. PEMBUATAN TABEL MONITORING USER PEDULILINDUNGI .. 46

5.3. PEMBERSIHAN KOLOM ZONA ... 47

5.4. PEMBERSIHAN KOLOM TOTAL POSITIF ... 49

5.5. PENGGANTIAN NAMA PROVINSI, KABUPATEN/KOTA ... 49

BAB VI PENGUJIAN DAN EVALUASI ... 51

SKENARIO PENGUJIAN ... 51

6.1.1. Mengecek Data di Database setelah diInputkan ... 51

6.1.2. Mengecek Tabel Monitoring Covid-19 ... 51

6.1.3. Mengecek Tabel Monitoring User Pedulilinduugi…...51

6.1.4. Mengecek Kolom Zona………..………... ..52

6.1.5. Mengecek Kolom Total Positif... .52

(12)

xii

6.2. EVALUASI PENGUJIAN ... 52

6.2.1. Mengecek Data di Database setelah diInputkan ... 53

6.2.2. Mengecek Tabel Monitoring Covid-19 ... 56

6.2.3. Mengecek Tabel Monitoring User Pedulilinduugi…...57

6.2.4. Mengecek Kolom Zona………..………... ..58

6.2.5. Mengecek Kolom Total Positif... .58

6.2.6. Mengecek Nama Provinsi, Kabupaten/Kota,…...59

BAB VII KESIMPULAN DAN SARAN ... 61

DAFTAR PUSTAKA ... 62

(13)

xiii

DAFTARGAMBAR

Gambar 4.1: Tabel Pada Web Kabupaten Bangka Barat ... ... 17

Gambar 4.2: Tabel Pada Web Kabupaten Paser……….…... 19

Gambar 4.3: Tabel Pada Web Kabupaten Purworejo... 21

Gambar 4.4: Tabel Pada Web Kabupaten Semarang………... 24

Gambar 4.5: Tabel Pada Web Kota Pontianak…….………... 27

Gambar 4.6: Tabel Pada Web Kabupaten Alor………... 30

Gambar 4.7: Tabel Pada Web Kabupaten Ngawi….………... 33

Gambar 4.8: Tabel Pada Web Kabupaten Rokan Hulu……... 36

Gambar 4.9: Tabel Pada Web Kabupaten Sleman………...39

Gambar 4.10: Tabel Pada Web Kabupaten Tapanuli Tengah...42

Gambar 6.1: Bukti Data Kabupaten Bangka Barat sudah terinputkan ke dalam Database... 53

Gambar 6.2: Bukti Data Kabupaten Paser sudah terinputkan ke dalam Database………... 53

Gambar 6.3: Bukti Data Kabupaten Purworejo sudah terinputkan ke dalam Database………... 54

Gambar 6.4: Bukti Data Kabupaten Semarang sudah terinputkan ke dalam Database………... 54

Gambar 6.5: Bukti Data Kota Pontianak sudah terinputkan ke dalam Database………... 54

Gambar 6.6: Bukti Data Kabupaten Alor sudah terinputkan ke dalam Database………... 55

Gambar 6.7: Bukti Data Kabupaten Ngawi sudah terinputkan ke dalam Database………... 55

Gambar 6.8: Bukti Data Kabupaten Rokan Hulu sudah terinputkan ke dalam Database………... 55

Gambar 6.9: Bukti Data Kabupaten Sleman sudah terinputkan ke dalam Database………... 56

(14)

xiv

Gambar 6.10: Bukti Data Kabupaten Tapanuli Tengah sudah

terinputkan ke dalam Database………... 53

Gambar 6.11: Tabel Monitoring Job Status Covid-19…... 57

Gambar 6.12: Grafik Monitoring Job Status Covid-19... 57

Gambar 6.13: Tabel Monitoring User Pedulilindugi………... 57

Gambar 6.14: Bukti Unique Value Pada Table covid_data_v02...58

Gambar 6.15: Bukti Perubahan Kolom total_positif Pada Table covid_ data_v02………... 58

Gambar 6.16: Isi File untuk Mapping Nama Provinsi, Kabupaten/Kota, Kecamatan, dan Kelurahan... 59

(15)

xv

(16)

xvi

(17)

1.1. Latar Belakang

Dunia akhir-akhir ini sedang dilanda sebuah

Pandemi yang bernama Corona Virus atau Covid-19.

Penyakit berbahaya ini menyerang organ pernafasan

manusia. Agar pandemi ini bisa cepat selesai kita perlu

memutuskan rantai penularan covid ini. Selain itu ggar

manusia bisa sehat dan terhindar dari penyakit ini

dibutuhkan sebuah aplikasi yang dapat membuat

berhati-hati dengan lokasi keberadaan pengguna

tersebut.

Aplikasi Pedulilindungi merupakan salah satu

aplikasi mobile yang membantu penggunanya untuk

bisa berhati-hati jika pengguna memasuki wilayah

yang rawan covid-19. Dengan adanya aplikasi ini para

pengguna bisa berhati-hati atau untuk tidak berpergian

ke tempat rawan Covid-19 dan dapat menjaga

Kesehatannya masing-masing.

Oleh karena itu, dibutuhkannya data setiap

kelurahan yang ada di Indonesia dimana data

kelurahan ini diambil dari website kabupaten yang up

to date. Sehingga para penggunanya bisa mengetahui

kemajuan Covid-19 di lokasi keberadaan pengguna.

(18)

2

1.2.Tujuan

Tujuan

Kerja

praktik

kali

ini

adalah

mengimplementasi-kan

fitur-fitur

berdasakan

kebutuhan perusahaan:

• Mendapatkan data covid dari web kabupaten

sehingga

bisa

digunakan

di

aplikasi

Pedulilindungi.

• Mengolah data Covid-19 sehingga tersaji dengan

benar di aplikasi Pedulilindungi.

• Membuat Data Monitoring dan check anomali

data Covid-19.

• Melabelkan kata pada Peraturan

Perundang-undangan.

1.3.Manfaat

Berikut manfaat yang diperoleh melalui kerja

praktik dalam pembuatan fitur-fitur sesuai kebutuhan:

● Dapat mengetahui data Covid-19 perkabupaten

yang ada di Indonesia.

● Dapat

memudahkan

pengguna

aplikasi

Pedulilindungi untuk mengetahui keadaan lokasi

keberadaan di pengguna.

● Dapat memudahkan para karyawan untuk

memonitoring data Covid-19.

(19)

3

1.4. Rumusan Permasalahan

Berikut rumusan masalah dalam pelaksanaan

kerja praktik pembuatan fitur-fitur sesuai kebutuhan:

• Bagaimana bisa mendapatkan data Covid-19

yang tersedia pada website kabupaten dan

membersihkan data tersebut sehingga tersaji

pada aplikasi Pedulilindungi?

• Bagaimana agar bisa memudahkan para

karyawan untuk memonitoring data Covid-19.

1.5. Lokasi dan Waktu Kerja Praktik

Kerja praktik kali ini dilaksanakan pada waktu

dan tempat sebagai berikut:

Lokasi

: PT. Telekomunikasi Indonesia Tbk

Alamat

: Jl. Sisingamangaraja No.4, RT.2/RW.1,

Selong, Kec. Kby. Baru, Kota Jakarta

Selatan, Daerah Khusus Ibukota Jakarta

12110

Waktu : 15 Juni 2020 – 1 September 2020

1.6. Metodologi Kerja Praktik

1. Perumusan Masalah

Untuk mengetahui data yang diinginkan,

diperlukan penjelasan mengenai kolom-kolom data

apa saja yang ada di database nantinya. Penjelasan

dari pembimbing lapangan kerja praktik memberikan

(20)

4

gambaran secara garis besar bagaimana data dari web

kabupaten apa saja yang diambil nantinya sehingga

bisa di masukkan ke database dan di olah data

tersebut sehingga bisa ditampilkan di aplikasi

Pedulilindungi. Setelah mendapatkan data yang

dimaksud, pembimmbing lapangan kerja praktik juga

memberikan tools apa saja yang dibutuhkan.

2. Studi Literatur

Setelah ditentukannya bahasa pemrograman,

rancangan database, dan tools yang digunakan, Di

tahapan ini akan dilakukan studi literatur bagaimana

jalannya data pada aplikasi Pedulilindungi ini.

Sehingga akan mudah dalam pembersihan data

nantinya.

Aplikasi Pedulilindungi ini sebenarnya sudah

dibuat. Agar data aplikasi ini terus uptodate ada

beberapa tools yang digunakan seperti Dbeaver untuk

memonitoring jalannya data yang masuk dan keluar.

Menggunakan bahasa Python pada Jupyter Notebook

untuk mendapatkan data dari web kabupaten. Selain

itu saya juga menggunakan Google Data Studio untuk

membuat tabel monitoring.

3. Pengumpulan Data

Di bagian ini meliputi pengumpulan data dari

web kabupaten atau web provinsi dengan maksud

untuk mendapatkan data Covid-19 di setiap

kecamatan atau kelurahan yang ada. Untuk

mendapatkan data tersebut digunakannya library

(21)

5

Python bernama Beautifulsoup dan Selenium agar

bisa mendapatkan data Covid-19 yang nantinya akan

diolah dan digunakan pada aplikasi Pedulilindungi.

4. Pembersihan dan Pengolahan Data

Dikarenakan banyaknya kabupaten yang ada di

Indonesia,

maka

banyak

juga

orang

yang

menginputkan data Covid-19. Oleh karena muncul

salah persepsi ke tidak benaran dalam penginputan

data sehingga ada data di dalam database yang perlu

dibersihkan.

Selain itu diperlukannya tabel monitoring

mengenai Covid-19 dan tabel monitoring orang yang

menginputkan data tersebut agar data Covid-19 dapat

terinputkan ke database dengan konsisten di tiap

harinya.

5. Pengujian dan Evaluasi

Pengujian dilakukan oleh pembimbing lapangan

dan anggota tim lain baik berupa pada data yang

diinputkan ke dalam database, data yang sudah

dibersihkan dan table monitoring.

(22)

6

1.7. Sistematika Laporan

Laporan kerja praktik ini terdiri dari 7 bab dengan

rincian sebagai berikut :

1. Bab I: Pendahuluan

Bab ini berisikan tentang latar belakan masalah,

tujuan, manfaat, rumusan masalah, lokasi dan waktu

kerja praktik, metodologi, dan sistematika laporan.

2. Bab II: Profil Instansi

Bab

ini

berisikan

tentang

profil

PT.

Telekomunikasi Indoensia.

3. Bab III: Tinjauan Pustaka

Bab ini berisikan mengenai dasar teori dan

teknologi yang dipakai dalam pembuatan model.

4. Bab IV: Pengumpulan Data

Pada bab ini dibahas tentang proses pengambilan

data dari web kabupaten dengan menggunakan

library Python dan dibersihkannya data tersebut

hingga masuknya data ke database.

5. Bab V: Pembersihan dan Pengolahan Data

Dalam bab ini dibahas pembersihan dan

pengolahan data Covid-19 yang nantinya akan

ditampilkan pada aplikasi Pedulilindungi.

(23)

7

6. Bab VI: Pengujian dan Evaluasi

Bab ini berisikan tentang skenario pengujian, dan

evaluasi pengujian data yang telah diinputkan dan

yang telah di proses.

7. Bab VII: Kesimpulan dan Saran

Bab ini berisi tentang kesimpulan dan saran yang

didapatkan dari tugas selama kerja praktik.

(24)

8

BAB II

PROFIL INSTANSI

2.1. Profil Instansi

PT Telkom Indonesia (Persero) Tbk (Telkom)

merupakan Badan Usaha Milik Negara (BUMN) yang

bergerak di bidang jasa layanan teknologi informasi

dan komunikasi (TIK) dan jaringan telekomunikasi di

Indonesia. Pemegang saham mayoritas Telkom

adalah Pemerintah Republik Indonesia sebesar

52.09%, dan 47.91% sisanya dikuasai oleh publik.

Saham Telkom diperdagangkan di Bursa Efek

Indonesia (BEI) dengan kode “TLKM” dan New

York Stock Exchange (NYSE) dengan kode “TLK”.

Dalam upaya bertransformasi menjadi digital

telecommunication

company,

TelkomGroup

mengimplementasikan strategi bisnis dan operasional

perusahaan yang berorientasi kepada pelanggan

(customer-oriented). Transformasi tersebut akan

membuat

organisasi

TelkomGroup

menjadi

lebih lean (ramping)

dan agile (lincah)

dalam

beradaptasi

dengan

perubahan

industri

telekomunikasi yang berlangsung sangat cepat.

Organisasi yang baru juga diharapkan dapat

meningkatkan efisiensi dan efektivitas dalam

menciptakan customer experience yang berkualitas.

Kegiatan usaha TelkomGroup bertumbuh dan

berubah seiring dengan perkembangan teknologi,

informasi dan digitalisasi, namun masih dalam

(25)

9

koridor industri telekomunikasi dan informasi. Hal ini

terlihat dari lini bisnis yang terus berkembang

melengkapi legacy yang sudah ada dari sebelumnya.

Telkom saat ini membagi bisnisnya menjadi 3 Digital

Business Domain, 3 Digital Business Domain tersebut

adalah :

-

Digital Connectivity : Fiber to the x

(FTTx), 5G, Software Defined Networking

(SDN)/ Network Function Virtualization

(NFV)/ Satellite.

-

Digital Platform : Data Center, Cloud,

Internet of Things (IoT), Big Data/ Artificial

Intelligence (AI), Cybersecurity.

(26)

10

2.2.Purpose, Visi dan Misi

Purpose dari Telkom adalah untuk mewujudkan

bangsa yang lebih sejahtera dan berdaya saing serta

memberikan nilai tambah yang terbaik bagi para

pemangku kepentingan.. Dimana Visi dari Telkom

adalah menjadi digital telco pilihan utama untuk

memajukan masyarakat. Dan untuk menunjang visi

tersebut, terdapat 3 Misi Telkom, yaitu:

- Mempercepat pembangunan Infrastruktur

dan

platform

digital

cerdas

yang

berkelanjutan, ekonomis, dan dapat diakses

oleh seluruh masyarakat.

- Mengembangkan talenta digital unggulan

yang membantu mendorong kemampuan

digital dan tingkat adopsi digital bangsa.

- Mengorkestrasi ekosistem digital untuk

memberikan pengalaman digital pelanggan

terbaik.

(27)

11

(28)

12

BAB III

TINJAUAN PUSTAKA

3.1. Aplikasi Mobile

Aplikasi mobile merupakan sebuah aplikasi yang

dapat

diakses

menggunakan

smartphone

yang

memerlukan instalasi terlebih dahulu jika ingin

menggunakan aplikasi tersebut.

3.2. Aplikasi Web

Aplikasi web merupakan sebuah aplikasi yang

dapat diakses menggunakan penjelajah web melalui

suatu jaringan seperti Internet atau intranet.

3.3. Jupyter Notebook

Jupyter Notebook merupakan sebuah tools yang

berguna untuk mendapatkan dan mengolah data. Tools

ini juga memungkinkan untuk mengintegrasikan antara

kode dengan output di dalam satu dokumen secara

interaktif.

3.4. DBeaver

DBeaver merupakan software untuk administrasi

berbagai macam database, salah satunya MySQL.

Dimana aplikasi ini sudah memiliki mode graphical atau

GUI.

3.5. Structure Query Language (SQL)

SQL merupakan sebuah sintaks atau perintah

yang digunakan untuk mengakses dan menampilkan data

pada sebuah database. Dengan bahasa ini, para pengguna

juga bisa mengatur data apa saja yang ingin ia tampilkan.

(29)

13

3.6. Python

Python

merupakan

bahasa

pemrograman

interpretatif

multiguna.

Dimana

python

lebih

menekankan pada keterbacaan kode agar lebih mudah

untuk memahami sintaks. Dengan kode yang simpel dan

mudah diimplementasikan, seorang programmer dapat

lebih mengutamakan pengembangan aplikasi yang

dibuat, bukan malah sibuk mencari sintaks error.

3.7. Google Data Studio

Google Data Studio (GDS) merupakan sebuah

platform basis data yang bisa mencampurkan berbagai

macam sumber data serta mengatur data dari basis data

tersebut sehingga sesuai dengan apa yang diinginkan

oleh penggunannya.

3.8. Database

Database merupakan sebuah kumpulan data yang

terorganisir dan umumnya disimpan dan diakses secara

elektronik dari suatu sistem komputer. Pada saat

pangkalan data menjadi semakin kompleks, maka

pangkalan data yang digunakan akan dikembangkan

menggunakan teknik perancangan dan pemodelan secara

formal.

3.9. Beautiful Soup

Beautiful Soup merupakan sebuah library python

yang memungkinkan penggunanya dalam melakukan

scraping dengan mudah dan cepat. Dimana library ini

menjadi solusi dalam mendapatkan informasi dari

sebuah situs web jika situs tersebut tidak menyediakan

API untuk mendapatkan data tersebut.

(30)

14

3.10. Selenium

Selenium merupakan salah satu library python

berupa kerangka portabel untuk menguji aplikasi web.

Library ini menyediakan alat pemutaran untuk membuat

pengujian fungsional tanpa perlu mempelajari bahasa

skrip pengujian (Selenium IDE).

3.11. Scraping

Web scraping merupakan sebuah proses

ekstraksi data tertentu secara semi-terstruktur dari

sebuah halaman website dimana kegiatan ini dilakukan

dengan menggunakan web scraper, bot, web spider, atau

web crawler. Teknik scraping diimplementasikan pada

sebuah bot agar bisa membuat proses yang harusnya

dilakukan secara manual menjadi otomatis

(31)

15

(32)

16

BAB IV

PENGUMPULAN DATA

Bab ini membahas bagaimana cara mendapatkan data Covid-19 dari web Kabupaten. Bab ini akan dibagi menjadi dua bagian, yaitu dengan menggunakan Beautiful Soup dan Selenium.

4.1. Penggunaan Beautiful Soup

Beautiful Soup merupakan salah satu library yang dapat menduplikasi source code html pada web tersebut sehingga kita bisa mendapatkan data Covid-19 dari kabupaten tersebut.

4.1.1. Pada Kabupaten Bangka Barat

Disini kita bisa mendapatkan data covid-19 per kecamatan yang ada di kabupaten Bangka Barat yang berada di Provinsi Kepulauan Bangka Belitung .

Gambar 4.1 : Tabel Pada Web Kabupaten Bangka Barat from urllib.request import urlopen

from bs4 import BeautifulSoup import pandas as pd

import numpy as np

html = urlopen("https://covid19.bangkabaratkab.go.id/").read() soup = BeautifulSoup(html,"lxml")

(33)

17 x=[] for p in konten: odp = p.find_all("td") for i in odp: x.append(i.get_text().replace('\n', "").replace("KECAMATAN","")) temp = np.reshape(x, (-1, 5)) df = pd.DataFrame(temp) df = df.iloc[1:] df=df.rename(columns={0:"Kecamatan", 1:"total_otg",2:"total_odp",3:"total_pdp",4:"total_positif"}) allcolom = ['scrape_date','date_update','provinsi','kabkot', 'kecamatan','kelurahan','alamat', 'total_odp','odp_sembuh', 'odp_dipantau','odp_isolasi','odp_meninggal','total_pdp','pdp_sembu h','pdp_dipantau','pdp_isolasi','pdp_meninggal','total_positif','positif_ sembuh','positif_dirawat','positif_isolasi','positif_meninggal','total_ot g','otg_sembuh','otg_dipantau','odr_total','odr_selesai','odr_dipantau',' total_PP','PP_sembuh','PP_dipantau','pptg_total','pptg_sembuh','pptg _dipantau','total_ppdt','ppdt_sembuh','ppdt_dipantau','ob_total','ob_s embuh','ob_dipantau', 'total_rapid_reaktif', 'rapid_reaktif_sembuh', 'rapid_reaktif_dipantau', 'zona','source_link', 'types','flags']

df2 = pd.DataFrame(columns=allcolom)

df2[['kecamatan','total_odp','total_pdp','total_positif','total_otg']] = df[['Kecamatan','total_odp','total_pdp','total_positif','total_otg']] df2['scrape_date'] = pd.to_datetime('today').strftime('%Y/%m/%d') df2['date_update'] = pd.to_datetime('today').strftime('%Y/%m/%d') df2['provinsi'] = 'Kepulauan Bangka Belitung'

(34)

18

4.1.2. Pada Kabupaten Paser

Disini kita bisa mendapatkan data covid-19 per kecamatan yang ada di Kabupaten Paser yang berada di Provinsi Kalimantan Timur.

df2['types'] = 'Kecamatan' df2['user_pic'] = 'Thalut'

df2.to_csv("Kecamatan Pada Bangka Barat.csv",index=False) path = r'C:\Users\Thalut\H3' df2.to_csv(path+'\my_csv.csv',mode='a',index=False, header=False) import pymysql.cursors import sqlalchemy engine = sqlalchemy.create_engine('mysql+pymysql://username:password @host:port/database’s name') df2.to_sql( name=table’s name, con=engine, index=False, if_exists='append' )

(35)

19

Gambar 4.2 : Tabel Pada Web Kabupaten Paser from urllib.request import urlopen

from bs4 import BeautifulSoup import pandas as pd

import numpy as np

html = urlopen("https://covid19.paserkab.go.id/").read() soup = BeautifulSoup(html,"lxml")

konten = soup.find_all("table", "table hover sm table-bordered")[0].find("tbody").find_all("tr") x=[] for p in konten: odp = p.find_all("td") for i in odp: x.append(i.get_text()) print(i)

(36)

20 df= pd.DataFrame(temp) for i in df.columns[1:]: df[i] = df[i].astype(int) df = df.drop(columns=[3]) df = df.rename(columns={0:"kecamatan", 1:"total_odp",2:"total_otg",4:"positif_sembuh",5:"positif_dirawat ",6:"positif_meninggal"}) df['total_positif'] = df['positif_dirawat'] allcolom = ['scrape_date','date_update','provinsi','kabkot', 'kecamatan','kelurahan','alamat', 'total_odp','odp_sembuh', 'odp_dipantau','odp_isolasi','odp_meninggal','total_pdp','pdp_sem buh','pdp_dipantau','pdp_isolasi','pdp_meninggal','total_positif','p ositif_sembuh','positif_dirawat','positif_isolasi','positif_meningga l','total_otg','otg_sembuh','otg_dipantau','odr_total','odr_selesai','o dr_dipantau','total_PP','PP_sembuh','PP_dipantau','pptg_total','pp tg_sembuh','pptg_dipantau','total_ppdt','ppdt_sembuh','ppdt_dipa ntau','ob_total','ob_sembuh','ob_dipantau', 'total_rapid_reaktif', 'rapid_reaktif_sembuh', 'rapid_reaktif_dipantau', 'zona','source_link', 'types','flags'] df2 = pd.DataFrame(columns=allcolom) df2[['kecamatan','total_odp','total_otg','total_positif', 'positif_sembuh', 'positif_dirawat', 'positif_meninggal']] = df[['kecamatan','total_odp','total_otg','total_positif', 'positif_sembuh', 'positif_dirawat', 'positif_meninggal']] df2['scrape_date'] = pd.to_datetime('today').strftime('%Y-%m-%d')

df2['date_update'] = pd.to_datetime('today').strftime('%Y-%m-%d')

(37)

21

4.1.3. Pada Kabupaten Purworejo

Disini kita bisa mendapatkan data covid-19 per kecamatan yang ada di Kabupaten Purworejo yang berada di Provinsi Jawa Tengah.

Gambar 4.3 : Tabel Pada Web Kabupaten Purworejo df2['kabkot'] = 'Paser'

df2['source_link'] = 'https://covid19.paserkab.go.id/' df2['types'] = 'Kecamatan'

df2['user_pic'] = 'Thalut'

df2.to_csv("Kecamatan Pada Paser.csv",index=False) import pymysql.cursors import sqlalchemy engine = sqlalchemy.create_engine('mysql+pymysql://username:password @host:port/database’s name') df2.to_sql( name=table’s name, con=engine, index=False, if_exists='append' )

(38)

22 from bs4 import BeautifulSoup import pandas as pd import numpy as np html = urlopen("https://covid19.purworejokab.go.id/").read() soup = BeautifulSoup(html,"lxml") konten = soup.find_all("table")[0].find("tbody").find_all("tr") x=[] for p in konten: odp = p.find_all("td") for i in odp: x.append(i.get_text().replace('\n', "")) print(i) temp = np.reshape(x, (-1, 6)) df = pd.DataFrame(temp) df = df.drop(0,axis=1) df = df.rename(columns={1:"kecamatan", 2:"total_odp", 3:"total_pdp", 4:"total_positif",5:"positif_meninggal"}) allcolom = ['scrape_date','date_update','provinsi','kabkot', 'kecamatan','kelurahan','alamat', 'total_odp','odp_sembuh', 'odp_dipantau','odp_isolasi','odp_meninggal','total_pdp','pdp_sem buh','pdp_dipantau','pdp_isolasi','pdp_meninggal','total_positif','p ositif_sembuh','positif_dirawat','positif_isolasi','positif_meningga l','total_otg','otg_sembuh','otg_dipantau','odr_total','odr_selesai','o dr_dipantau','total_PP','PP_sembuh','PP_dipantau','pptg_total','pp tg_sembuh','pptg_dipantau','total_ppdt','ppdt_sembuh','ppdt_dipa ntau','ob_total','ob_sembuh','ob_dipantau', 'total_rapid_reaktif', 'rapid_reaktif_sembuh', 'rapid_reaktif_dipantau', 'zona','source_link', 'types','flags']

(39)

23

4.1.4. Pada Kabupaten Semarang

Disini kita bisa mendapatkan data covid-19 per kecamatan yang ada di Kabupaten Semarang yang berada di Provinsi Jawa Tengah.

df2[['kecamatan','total_odp','total_pdp','total_positif','positif_men inggal']]=df[['kecamatan','total_odp','total_pdp','total_positif','pos itif_meninggal']] df2['scrape_date'] = pd.to_datetime('today').strftime('%Y/%m/%d') df2['date_update'] = pd.to_datetime('today').strftime('%Y/%m/%d') df2['provinsi'] = 'Jawa Tengah'

df2['kabkot'] = 'Purworejo'

df2['source_link'] = 'https://covid19.purworejokab.go.id/' df2['types'] = 'Kecamatan'

df2['user_pic'] = 'Thalut'

df2.to_csv("Kecamatan Pada Purworejo.csv",index=False) import pymysql.cursors import sqlalchemy engine = sqlalchemy.create_engine('mysql+pymysql://username:password @host:port/database’s name') df2.to_sql( name=table’s name, con=engine, index=False, if_exists='append' )

(40)

24

Gambar 4.4 : Tabel Pada Web Kabupaten Semarang from urllib.request import urlopen

from bs4 import BeautifulSoup import pandas as pd

import numpy as np

html = urlopen("https://corona.semarangkab.go.id/").read() soup = BeautifulSoup(html,"lxml")

konten = soup.find_all("table", "table table-bordered")[0].find("tbody").find_all("tr") x = [] for p in konten: odp = p.find_all("td") for i in odp: x.append(i.get_text().replace('\n', "").replace("\r","").replace("\t","")) temp = np.reshape(x, (-1, 12)) df= pd.DataFrame(temp)

(41)

25 df[i] = df[i].astype(int) df = df.drop([0,2,6,11],axis=1) df = df.rename(columns={1:"kecamatan", 3:"odp_dipantau",4:"odp_sembuh",5:"odp_meninggal",7:"positif _dirawat",8:"total_otg",9:"positif_sembuh",10:"positif_meningga l"}) df['total_odp'] = df['odp_dipantau'] df['total_positif'] = df['positif_dirawat'] allcolom = ['scrape_date','date_update','provinsi','kabkot', 'kecamatan','kelurahan','alamat', 'total_odp','odp_sembuh', 'odp_dipantau','odp_isolasi','odp_meninggal','total_pdp','pdp_sem buh','pdp_dipantau','pdp_isolasi','pdp_meninggal','total_positif','p ositif_sembuh','positif_dirawat','positif_isolasi','positif_meningga l','total_otg','otg_sembuh','otg_dipantau','odr_total','odr_selesai','o dr_dipantau','total_PP','PP_sembuh','PP_dipantau','pptg_total','ppt g_sembuh','pptg_dipantau','total_ppdt','ppdt_sembuh','ppdt_dipan tau','ob_total','ob_sembuh','ob_dipantau', 'total_rapid_reaktif', 'rapid_reaktif_sembuh', 'rapid_reaktif_dipantau', 'zona','source_link', 'types','flags'] df2 = pd.DataFrame(columns=allcolom)

df2[['kecamatan', 'odp_dipantau', 'odp_meninggal', 'odp_sembuh', 'positif_dirawat', 'total_otg', 'positif_sembuh', 'positif_meninggal', 'total_odp', 'total_positif' ]] = df[['kecamatan', 'odp_dipantau', 'odp_meninggal', 'odp_sembuh', 'positif_dirawat', 'total_otg', 'positif_sembuh', 'positif_meninggal', 'total_odp', 'total_positif' ]]

(42)

26 %d')

df2['date_update'] = pd.to_datetime('today').strftime('%Y-%m-%d')

df2['provinsi'] = 'Jawa Tengah' df2['kabkot'] = 'Semarang'

df2['source_link'] = 'https://corona.semarangkab.go.id/' df2['types'] = 'Kecamatan'

df2['user_pic'] = 'Thalut'

df2.to_csv("Kecamatan Pada Semarang.csv",index=False) path = r'C:\Users\Thalut\H3' df2.to_csv(path+'\my_csv.csv',mode='a',index=False, header=False) import pymysql.cursors import sqlalchemy engine = sqlalchemy.create_engine('mysql+pymysql://username:password @host:port/database’s name') df2.to_sql( name=table’s name, con=engine, index=False, if_exists='append' )

(43)

27

4.1.5. Pada Kota Pontianak

Disini kita bisa mendapatkan data covid-19 per kelurahan yang ada di Kota Pontianak yang berada di Provinsi Kalimantan Barat.

Gambar 4.5 : Tabel Pada Web Kota Pontianak

from urllib.request import urlopen from bs4 import BeautifulSoup import pandas as pd

import numpy as np

html = urlopen("https://covid19.pontianakkota.go.id/peta-persebaran").read()

soup = BeautifulSoup(html,"lxml")

konten= soup.find_all("table", "table striped table-bordered")[0].find("tbody").find_all("tr")

(44)

28 for p in konten: odp = p.find_all("td") a=0 for i in odp: if a > 1: x.append(i.get_text().replace('\n', "").replace('Kelurahan ', "").replace(' ', "")) else: x.append(i.get_text().replace('\n', "").replace('Kelurahan ', "")) a+=1 temp = np.reshape(x, (-1, 10)) df = pd.DataFrame(temp) df = df.drop(4,axis=1) df = df.rename(columns={0:"kecamatan", 1:"kelurahan",2:"odr_total",3:"total_odp",5:"total_pdp",6:"total_posit if",7:"positif_meninggal",8:"positif_sembuh",9:"positif_dirawat"}) allcolom = ['scrape_date','date_update','provinsi','kabkot', 'kecamatan','kelurahan','alamat', 'total_odp','odp_sembuh', 'odp_dipantau','odp_isolasi','odp_meninggal','total_pdp','pdp_sembuh' ,'pdp_dipantau','pdp_isolasi','pdp_meninggal','total_positif','positif_se mbuh','positif_dirawat','positif_isolasi','positif_meninggal','total_otg',' otg_sembuh','otg_dipantau','odr_total','odr_selesai','odr_dipantau','tota l_PP','PP_sembuh','PP_dipantau','pptg_total','pptg_sembuh','pptg_dip antau','total_ppdt','ppdt_sembuh','ppdt_dipantau','ob_total','ob_sembu h','ob_dipantau', 'total_rapid_reaktif', 'rapid_reaktif_sembuh',

(45)

29

df2[['kecamatan', 'kelurahan','odr_total', 'total_odp', 'total_pdp', 'total_positif', 'positif_meninggal', 'positif_sembuh',

'positif_dirawat']]=df[['kecamatan', 'kelurahan','odr_total', 'total_odp', 'total_pdp', 'total_positif', 'positif_meninggal', 'positif_sembuh', 'positif_dirawat']]

df2['scrape_date'] = pd.to_datetime('today').strftime('%Y-%m-%d')

df2['date_update'] = pd.to_datetime('today').strftime('%Y-%m-%d')

df2['provinsi'] = 'Kalimantan Barat' df2['kabkot'] = 'Kota Pontianak'

df2['source_link'] = 'https://covid19.pontianakkota.go.id/peta-persebaran'

df2['types'] = 'Kelurahan' df2['user_pic'] = 'Thalut'

df2.to_csv("Kelurahan Pada Kota Pontianak.csv",index=False) path = r'C:\Users\Thalut\H3' df2.to_csv(path+'\my_csv.csv',mode='a',index=False, header=False) import pymysql.cursors import sqlalchemy engine = sqlalchemy.create_engine('mysql+pymysql://username:password @host:port/database’s name') df2.to_sql( name=table’s name, con=engine, index=False, if_exists='append' )

(46)

30

4.2. Penggunaan Selenium

Selenium juga merupakan contoh lain library python yang dapat menduplikasikan source code tampilan pada web yang bersangkutan, Yang membedakan Selenium dengan Beautiful Soup adalah Selenium dapat melakukan interaksi dengan web tersebut seperti klik tombol tertentu, scroll halaman, dan lain-lain.

4.2.1. Pada Kabupaten Alor

Disini kita bisa mendapatkan data Covid-19 per kecamatan yang ada di Kabupaten Alor.

Gambar 4.6 : Tabel Pada Web Kabupaten Alor from selenium import webdriver

from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select import pandas as pd

import re import time

(47)

31 chrome_options.add_argument("--incognito") chrome_options.add_argument("--window-size=1920x1080") chrome_path = r"C:\Users\Thalut\Downloads\chrome\chromedriver.exe" driver = webdriver.Chrome(chrome_path) url = "http://www.covid19.nttprov.go.id/home/data" driver.get(url) All_option = driver.find_element_by_class_name('form- row.align-items-center').find_element_by_tag_name('select').find_elements_by_t ag_name('option') drp = driver.find_element_by_name("kabupaten_id") sel = Select(drp) sel.select_by_visible_text('ALOR') time.sleep(5) driver.find_element_by_class_name('btn.btn-primary').click() driver.execute_script("window.scrollTo(0, 5000)") isi = driver.find_elements_by_xpath('//tbody/tr') allin = [] j=0 while j < len(isi): total = isi[j].text x = total.split()[-4:] print(x) x.append(" ".join(total.split()[1:-4])) allin.append(x) j+=1

(48)

32 for i in df.columns[0:-1]: df[i] = df[i].astype(int) df=df.rename(columns={4:"kabkot",0:"otg_dipantau",1:"odp_dip antau",2:"pdp_isolasi",3:"positif_dirawat"}) allcolom = ['scrape_date','date_update','provinsi','kabkot', 'kecamatan','kelurahan','alamat', 'total_odp','odp_sembuh', 'odp_dipantau','odp_isolasi','odp_meninggal','total_pdp','pdp_sem buh','pdp_dipantau','pdp_isolasi','pdp_meninggal','total_positif','p ositif_sembuh','positif_dirawat','positif_isolasi','positif_meningga l','total_otg','otg_sembuh','otg_dipantau','odr_total','odr_selesai','o dr_dipantau','total_PP','PP_sembuh','PP_dipantau','pptg_total','ppt g_sembuh','pptg_dipantau','total_ppdt','ppdt_sembuh','ppdt_dipan tau','ob_total','ob_sembuh','ob_dipantau', 'total_rapid_reaktif', 'rapid_reaktif_sembuh', 'rapid_reaktif_dipantau', 'zona','source_link', 'types','flags'] df2 = pd.DataFrame(columns=allcolom) df2[['kabkot','otg_dipantau','odp_dipantau','pdp_isolasi','positif_d irawat']]=df[['kabkot','otg_dipantau','odp_dipantau','pdp_isolasi',' positif_dirawat']] df2['scrape_date'] = pd.to_datetime('today').strftime('%Y-%m-%d') df2['date_update'] = pd.to_datetime('today').strftime('%Y-%m-%d')

df2['provinsi'] = 'Nusa Tenggara Timur' df2['kabkot'] = 'Alor'

df2['source_link'] = 'http://www.covid19.nttprov.go.id/home/data' df2['types'] = 'Kecamatan'

df2['user_pic'] = 'Thalut'

(49)

33

4.2.2. Pada Kabupaten Ngawi

Disini kita bisa mendapatkan data Covid-19 per kecamatan yang ada di Kabupaten Ngawi.

Gambar 4.7 : Tabel Pada Web Kabupaten Ngawi import sqlalchemy engine = sqlalchemy.create_engine('mysql+pymysql://username:password @host:port/database’s name') df2.to_sql( name=table’s name, con=engine, index=False, if_exists='append' )

from selenium import webdriver

from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import Select import pandas as pd

(50)

34 chrome_options = Options() chrome_options.add_argument("--incognito") chrome_options.add_argument("--window-size=1920x1080") chrome_path = r"C:\Users\Thalut\Downloads\chrome\chromedriver.exe" judul_berita = [] allin = [] temper=[] driver = webdriver.Chrome(chrome_path) url = "https://covid19.ngawikab.go.id/data" driver.get(url) drp = driver.find_element_by_name("kecamatan-table_length") sel = Select(drp) sel.select_by_visible_text('100') isi = driver.find_elements_by_xpath('//*[@id="kecamatan-table"]/tbody/tr') j=0 while j < len(isi): total = isi[j].text x = total.split()[-6:] print(x) x.append(" ".join(total.split()[0:-6])) allin.append(x) j+=1 df = pd.DataFrame(allin) df = df.rename(columns={6:"kecamatan", 0:"odr_total", 1:"total_odp", 2:"total_pdp", 3:"total_positif"})

(51)

35 'kecamatan','kelurahan','alamat', 'total_odp','odp_sembuh', 'odp_dipantau','odp_isolasi','odp_meninggal','total_pdp','pdp_sem buh','pdp_dipantau','pdp_isolasi','pdp_meninggal','total_positif','p ositif_sembuh','positif_dirawat','positif_isolasi','positif_meningga l','total_otg','otg_sembuh','otg_dipantau','odr_total','odr_selesai','o dr_dipantau','total_PP','PP_sembuh','PP_dipantau','pptg_total','ppt g_sembuh','pptg_dipantau','total_ppdt','ppdt_sembuh','ppdt_dipan tau','ob_total','ob_sembuh','ob_dipantau', 'total_rapid_reaktif', 'rapid_reaktif_sembuh', 'rapid_reaktif_dipantau', 'zona','source_link', 'types','flags'] df2 = pd.DataFrame(columns=allcolom) df2[['kecamatan','total_odp','total_pdp','total_positif','odr_total']]= df[['kecamatan','total_odp','total_pdp','total_positif','odr_total']] df2['scrape_date'] = pd.to_datetime('today').strftime('%Y-%m-%d') df2['date_update'] = pd.to_datetime('today').strftime('%Y-%m-%d')

df2['provinsi'] = 'Jawa Timur' df2['kabkot'] = 'Ngawi'

df2['source_link'] = 'https://covid19.ngawikab.go.id/data' df2['types'] = 'Kecamatan'

df2['user_pic'] = 'Thalut'

df2.to_csv("Kecamatan Pada Ngawi.csv",index=False) import pymysql.cursors

import sqlalchemy

engine =

sqlalchemy.create_engine('mysql+pymysql://username:password @host:port/database’s name')

(52)

36

4.2.3. Pada Kabupaten Rokan Hulu

Disini kita bisa mendapatkan data Covid-19 per kecamatan yang ada di Kabupaten Rokan Hulu yang berada di Provinsi Riau.

Gambar 4.8 : Tabel Pada Web Kabupaten Rokan Hulu name=table’s name,

con=engine, index=False, if_exists='append' )

from selenium import webdriver

from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.keys import Keys import pandas as pdallin = allin[0:16]

import re chrome_options = Options() chrome_options.add_argument("--incognito") chrome_options.add_argument("--window-size=1920x1080") chrome_path = r"C:\Users\Thalut\Downloads\chrome\chromedriver.exe" judul_berita = []

(53)

37 temper=[] driver = webdriver.Chrome(chrome_path) url = "https://corona.rokanhulukab.go.id/" driver.get(url) isi = driver.find_elements_by_xpath('//tbody/tr') j=0 while j < len(isi): total = isi[j].text x = total.split()[-8:] print(x) x.append(" ".join(total.split()[0:-8])) allin.append(x) j +=1 allin = allin[0:16] df = pd.DataFrame(allin) for i in df.columns[0:-1]: df[i] = df[i].astype(int)

df = df.rename(columns = {8:"Kecamatan", 0:"total_odp", 1:"total_pdp", 2:"total_positif", 3:"odr_total", 4:"total_PP"}) df = df.drop([5,6,7], axis=1) allcolom = ['scrape_date','date_update','provinsi','kabkot', 'kecamatan','kelurahan','alamat', 'total_odp','odp_sembuh', 'odp_dipantau','odp_isolasi','odp_meninggal','total_pdp','pdp_sem buh','pdp_dipantau','pdp_isolasi','pdp_meninggal','total_positif','p ositif_sembuh','positif_dirawat','positif_isolasi','positif_meningga l','total_otg','otg_sembuh','otg_dipantau','odr_total','odr_selesai','o dr_dipantau','total_PP','PP_sembuh','PP_dipantau','pptg_total','ppt g_sembuh','pptg_dipantau','total_ppdt','ppdt_sembuh','ppdt_dipan tau','ob_total','ob_sembuh','ob_dipantau', 'total_rapid_reaktif', 'rapid_reaktif_sembuh', 'rapid_reaktif_dipantau', 'zona','source_link', 'types','flags']

(54)

38

4.2.4. Pada Kabupaten Sleman

Disini kita bisa mendapatkan data Covid-19 per kecamatan yang ada di Kabupaten Sleman yang berada di Provinsi Daerah Istimewa Yogyakarta.

df2[['kecamatan','total_odp','total_pdp','total_positif','odr_total','to tal_PP']]=df[['Kecamatan','total_odp','total_pdp','total_positif','odr _total','total_PP']] df2['scrape_date'] = pd.to_datetime('today').strftime('%Y-%m-%d') df2['date_update'] = pd.to_datetime('today').strftime('%Y-%m-%d') df2['provinsi'] = 'Riau' df2['kabkot'] = 'Rokan Hulu'

df2['source_link'] = 'https://corona.rokanhulukab.go.id/' df2['types'] = 'Kecamatan'

df2['user_pic'] = 'Thalut'

df2.to_csv("Kecamatan Pada Rokan Hulu.csv",index=False) import pymysql.cursors import sqlalchemy engine = sqlalchemy.create_engine('mysql+pymysql://username:password @host:port/database’s name') df2.to_sql( name=table’s name, con=engine, index=False, if_exists='append' )

(55)

39

Gambar 4.9 : Tabel Pada Web Kabupaten Sleman from selenium import webdriver

from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.keys import Keys import pandas as pd import re chrome_options = Options() chrome_options.add_argument("--incognito") chrome_options.add_argument("--window-size=1920x1080") chrome_path= r"C:\Users\Thalut\Downloads\chrome\chromedriver.exe" judul_berita = [] allin = [] temper=[] driver = webdriver.Chrome(chrome_path) url = "https://covidtracer.slemankab.go.id/dashboard/" driver.get(url) isi = driver.find_elements_by_xpath('//tbody/tr') j=0

(56)

40 a=len(isi)-1 while j < a: total = isi[j].text x = total.split()[-14:] print(x) x.append(" ".join(total.split()[1:-14])) allin.append(x) j+=1 df = pd.DataFrame(allin) for i in df.columns[0:-1]: df[i] = df[i].astype(int) df=df.drop([2,3,4,5,6,7,8,9,10,11,12], axis=1) df=df.rename(columns={14:"kecamatan",0:"odp_sembuh",1:"od p_dipantau",13:"total_pdp"}) df['total_odp'] = df['odp_dipantau'] allcolom = ['scrape_date','date_update','provinsi','kabkot', 'kecamatan','kelurahan','alamat', 'total_odp','odp_sembuh', 'odp_dipantau','odp_isolasi','odp_meninggal','total_pdp','pdp_sem buh','pdp_dipantau','pdp_isolasi','pdp_meninggal','total_positif','p ositif_sembuh','positif_dirawat','positif_isolasi','positif_meningga l','total_otg','otg_sembuh','otg_dipantau','odr_total','odr_selesai','o dr_dipantau','total_PP','PP_sembuh','PP_dipantau','pptg_total','pp tg_sembuh','pptg_dipantau','total_ppdt','ppdt_sembuh','ppdt_dipa ntau','ob_total','ob_sembuh','ob_dipantau', 'total_rapid_reaktif', 'rapid_reaktif_sembuh', 'rapid_reaktif_dipantau', 'zona','source_link', 'types','flags'] df2 = pd.DataFrame(columns=allcolom) df2[['kecamatan','total_odp','total_pdp','odp_sembuh','odp_dipant au']]=df[['kecamatan','total_odp','total_pdp','odp_sembuh', 'odp_dipantau ']]

(57)

41

4.2.5. Pada Kabupaten Tapanuli Tengah

Disini kita bisa mendapatkan data Covid-19 per kecamatan yang ada di Kabupaten Tapanuli Tengah yang berada di Provinsi Sumatera Selatan.

df2['scrape_date'] = pd.to_datetime('today').strftime('%Y-%m-%d')

df2['date_update'] = pd.to_datetime('today').strftime('%Y-%m-%d')

df2['provinsi'] = 'Daerah Istimewa Yogyakarta' df2['kabkot'] = 'Sleman'

df2['source_link'] =

'https://covidtracer.slemankab.go.id/dashboard/' df2['types'] = 'Kecamatan'

df2['user_pic'] = 'Thalut'

df2.to_csv("Kecamatan Pada Sleman.csv",index=False) import pymysql.cursors import sqlalchemy engine = sqlalchemy.create_engine('mysql+pymysql://username:password @host:port/database’s name') df2.to_sql( name=table’s name, con=engine, index=False, if_exists='append' )

(58)

42

Gambar 4.10 : Tabel Pada Web Kabupaten Tapanuli Tengah from selenium import webdriver

from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.keys import Keys import pandas as pd import re chrome_options = Options() chrome_options.add_argument("--incognito") chrome_options.add_argument("--window-size=1920x1080") chrome_path= r"C:\Users\Thalut\Downloads\chrome\chromedriver.exe" judul_berita = [] allin = [] temper=[] driver = webdriver.Chrome(chrome_path) url = "https://covid19.tapteng.go.id/public/" driver.get(url) isi = driver.find_elements_by_xpath('//tbody/tr') j=0

(59)

43 total = isi[j].text x = total.split()[-8:] print(x) x.append(" ".join(total.split()[0:-8])) allin.append(x) j+=1 df = pd.DataFrame(allin) for i in df.columns[0:8]: df[i] = df[i].astype(int) df = df.rename(columns={8:"kecamatan", 0:"total_PP", 1:"odr_total",2:"total_odp",3:"total_pdp",6:"positif_sembuh",7:" positif_meninggal"}) df['total_positif']=df[5]-df['positif_sembuh']-df['positif_meninggal'] df = df.drop([4,5], axis=1) allcolom = ['scrape_date','date_update','provinsi','kabkot', 'kecamatan','kelurahan','alamat', 'total_odp','odp_sembuh', 'odp_dipantau','odp_isolasi','odp_meninggal','total_pdp','pdp_sem buh','pdp_dipantau','pdp_isolasi','pdp_meninggal','total_positif','p ositif_sembuh','positif_dirawat','positif_isolasi','positif_meningga l','total_otg','otg_sembuh','otg_dipantau','odr_total','odr_selesai','o dr_dipantau','total_PP','PP_sembuh','PP_dipantau','pptg_total','pp tg_sembuh','pptg_dipantau','total_ppdt','ppdt_sembuh','ppdt_dipa ntau','ob_total','ob_sembuh','ob_dipantau', 'total_rapid_reaktif', 'rapid_reaktif_sembuh', 'rapid_reaktif_dipantau', 'zona','source_link', 'types','flags']

(60)

44

df2[['total_PP', 'odr_total', 'total_odp', 'total_pdp', 'positif_sembuh','positif_meninggal', 'kecamatan', 'total_positif']] = df[['total_PP', 'odr_total', 'total_odp', 'total_pdp', 'positif_sembuh','positif_meninggal', 'kecamatan', 'total_positif']] df2['scrape_date'] = pd.to_datetime('today').strftime('%Y-%m-%d')

df2['date_update'] = pd.to_datetime('today').strftime('%Y-%m-%d')

df2['provinsi'] = 'Sumatera Selatan' df2['kabkot'] = 'Tapanuli Tengah'

df2['source_link'] = 'https://covid19.tapteng.go.id/public/' df2['types'] = 'Kecamatan'

df2['user_pic'] = 'Thalut'

df2.to_csv("Kecamatan Pada Tapanuli Tengah.csv",index=False) import pymysql.cursors import sqlalchemy engine = sqlalchemy.create_engine('mysql+pymysql://username:password @host:port/database’s name') df2.to_sql( name=table’s name, con=engine, index=False, if_exists='append' )

(61)

45

(62)

46

BAB V

PEMBERSIHAN DAN PENGOLAHAN DATA

Bab ini membahas tentang implementasi dari sistem yang kami buat. Implementasi ini akan dibagi ke dalam beberapa bagian, yaitu bagian implementasi lapisan kontrol dan implementasi antarmuka pengguna.

5.1. Pembuatan Tabel Monitoring Covid-19

Disini saya ditugaskan untuk membuat table dan grafik yang berguna untuk memonitoring data Covid-19 dari kelurahan mana saja yang masuk kedalam database ini. Tugas ini dikerjakan pada Google Data Studio sehingga nanti bisa diambil API nya yang nantinya API tersebut akan diambil dan ditaruh pada web Pedulilindungi.

5.2. Pembuatan Tabel Monitoring User Pedulilindungi

Disini saya ditugaskan untuk membuat table yang berguna untuk memonitoring user mana saja yang sudah atau yang belum menginput data Covid-19 dan kapan terakhir update data Covid-19. Tugas ini dikerjakan pada Google Data Studio sehingga nanti bisa diambil API nya yang nantinya API tersebut akan diambil dan ditaruh pada web Pedulilindungi.

SELECT scrape_date, provinsi, kabkot, kecamatan, kelurahan, CASE

WHEN (CURDATE() - scrape_date) <= 2 THEN "OK" ELSE "NOK"

end as Status

(63)

47

5.3. Pembersihan Kolom Zona

Pembersihan ini dimaksudkan untuk menyisakan isi dari kolom zona tersebut menjadi 3 kelas dengan rules bahwa jika total positif Covid-19 lebih dari 1 (satu) maka di jadikan zona 3 (merah), jika total positif Covid-19 sama dengan 1 (satu) maka di jadikan zona 2 (kuning), dan jika total positif Covid-19 sama dengan 0 (nol) maka di jadikan zona 1(hijau).

WHEN CURDATE() - date(max(date_script)) = 0 THEN "Sudah Mengupdate"

ELSE "Belum Mengupdate" END

AS Status

from (select replace(upper(name_script), '_', ' ') as name, date_script

from (select distinct(user_pic) as name_script, max(scrape_date) as date_script

from covid19_data group by user_pic) temp1 UNION ALL

select replace(upper(name_upload), '_', ' ')as name, date_upload from (select distinct(users_pedulilindungi.name) as name_upload,

max(submited_date) as date_upload

from covid_upload_data, users_pedulilindungi where covid_upload_data.user_name = users_pedulilindungi.username

group by users_pedulilindungi.name) temp2 UNION ALL

select replace(upper(name_input), '_', ' ') as name, date_input from (select distinct(users_pedulilindungi.name) as name_input,

max(submited_time) as date_input from covid_input, users_pedulilindungi

where covid_input.user_name = users_pedulilindungi.username

group by users_pedulilindungi.name) temp3) allin group by name

(64)

48 inplace=True)

covid_compile_fix['zona'] = covid_compile_fix['zona'].replace('nan', np.nan, inplace=True)

covid_compile_fix['zona'] = covid_compile_fix['zona'].fillna(value=np.nan) # Rule Zonasi

def zonasi(row):

# if row['zona'] == 'nan' or row['zona'] == 'None' or (pd.isnull(row['zona'])) or pd.isnull(row['zona']):

# if row['zona'] == 'None' or row['zona'] == 'nan': if (pd.isnull(row['zona']) == True): if row['total_positif'] > 1: return('3') elif row['total_positif'] == 1: return('2') elif row['total_positif'] == 0: return('1') else: if row['zona'] == '1': return('1') elif row['zona'] == '2': return('2') elif row['zona'] == '3': return('3')

elif row['zona'].lower() == 'hijau': return('1')

elif row['zona'].lower() == 'biru' or row['zona'].lower() == 'biru-otg' : return('1')

elif row['zona'].lower() == 'ungu': return('1')

elif row['zona'].lower() == 'kuning': return('2')

elif row['zona'].lower() == 'jingga': return('2')

elif row['zona'].lower() == 'orange' or row['zona'].lower() == 'oranye': return('2')

elif row['zona'].lower() == 'merah' or row['zona'].lower() == 'merahmuda' or row['zona'].lower() == 'merah-positif':

return('3')

elif row['zona'].lower() == '#e8615d' or row['zona'].lower() == '#9e180d': return('3')

# Applying function zonasi

(65)

49

5.4. Pembersihan Kolom Total Positif

Pembersihan ini dimakuskan untuk menyamakan persepsi total positif yaitu total positif hanya berisikan positif aktif yaitu orang-orang yang dirawat dan orang-orang-orang-orang yang isolasi mandiri.

5.5. Penggantian Nama Provinsi, Kabupaten/Kota,

Kecamatan, dan Kelurahan dari Sebuah Excel

Pergantian ini dimaksudkan untuk membenarkan nama-nama Provinsi, Kabupaten, Kecamatan, dan Kelurahan sesuai dengan dictionary berbentuk excel yang telah diberikan. Sehingga data tersebut bisa di olah nantinya.

# Calculation to update total_positif def update_positif(row):

if row['total_positif'] >= (row['positif_sembuh'] + row['positif_meninggal']):

return(row['total_positif'] - row['positif_sembuh'] - row['positif_meninggal'])

elif row['total_positif'] < (row['positif_sembuh'] + row['positif_meninggal']):

return(row['total_positif'])

# Applying Function to update total_positif

covid_compile_fix['total_positif'] =

covid_compile_fix.apply(lambda row: update_positif(row), axis=1)

# Match kelurahan, kecamatan, kabkot, provinsi df1 = pd.read_excel ('provinsi.xlsx')

df2 = pd.read_excel ('kabkot.xlsx') df3 = pd.read_excel ('kecamatan.xlsx') df4 = pd.read_excel ('kelurahan.xlsx')

(66)

50

[Halaman ini sengaja dikosongkan]

x3 = pd.Series(df3.kecamatan_fix.values,index=df3.kecamatan).to_dict() x4 = pd.Series(df4.kelurahan_fix.values,index=df4.kelurahan).to_dict() covid_compile['provinsi'] = covid_compile['provinsi'].replace(x1) covid_compile['kabkot'] = covid_compile['kabkot'].replace(x2) covid_compile['kecamatan'] = covid_compile['kecamatan'].replace(x3) covid_compile['kelurahan'] = covid_compile['kelurahan'].replace(x4)

(67)

51

BAB VI

PENGUJIAN DAN EVALUASI

Pada bagian bab ini menjelaskan tahap uji coba terhadap Data Covid-19 yang telah diinputkan maupun Data Covid-19 yang telah di olah. Pengujian ini dilakukan untuk memastikan bahwa data tersebut telah sesuai dengan apa yang diminta oleh Pihak Telkom yang bersangkutan.

6.1.

Skenario Pengujian

Berikut ini merupakan tata cara pengujian dari data yang sudah di dapat maupun di olah di project Pedulilindungi ini.

6.1.1. Mengecek Data di Database setelah di Inputkan

Skenario pengujian aplikasi adalah sebagai berikut : 1. Membuka tools Database.

2. Menginputkan Bahasa SQL pada SQL Editor untuk mengecek apakah data tersebut sudah masuk atau belum.

6.1.2. Mengecek Tabel Monitoring Covid-19

Skenario pengujian aplikasi adalah sebagai berikut : 1. Membuka dan Login Web Pedulilindungi. 2. Memasuki menu Monitoring pada sidebar yang berada di kiri dan memilih ‘Job Status’.

6.1.3. Mengecek Tabel Monitoring User

Pedulilindungi

Skenario pengujian aplikasi adalah sebagai berikut : 1. Membuka dan Login Web Pedulilindungi. 2. Memasuki menu Monitoring pada sidebar yang berada di kiri dan memilih ‘Monitoring PIC’.

(68)

52

6.1.4. Mengecek Kolom Zona

Skenario pengujian aplikasi adalah sebagai berikut : 1. Membuka tools Database.

2. Menginputkan Bahasa SQL pada SQL Editor untuk mengecek unique class pada kolom tersebut.

6.1.5. Mengecek Kolom Total Positif

Skenario pengujian aplikasi adalah sebagai berikut : 1. Membuka tools Database.

2. Menginputkan Bahasa SQL pada SQL Editor untuk mengecek kolom total_positif pada table tersebut.

6.1.6. Mengecek Nama Provinsi, Kabupaten/Kota,

Kecamatan, dan Kelurahan yang Sudah di

Ganti

Skenario pengujian aplikasi adalah sebagai berikut : 1. Membuka tools Database.

2. Menginputkan Bahasa SQL pada SQL Editor untuk mengecek nama Provinsi, Kabupaten/Kota, Kecamatan, atau Kelurahan yang baru.

6.2. Evaluasi Pengujian

Pada bagian ini merupakan evaluasi pengujian yang telah dilakukan untuk mengecek apakah yang dikerjakan sudah benar atau belum.

(69)

53

6.2.1. Mengecek Data di Database setelah di Inputkan

Pengujian ini dilakukan dengan menggunakan bahasa SQL dengan nama kabupaten yang bersangkutan dan tanggal hari itu data tersebut diinputkan.

Gambar 6.1 : Bukti Data Kabupaten Bangka Barat sudah Terinputkan ke dalam Database

Gambar 6.2 : Bukti Data Kabupaten Paser sudah Terinputkan ke dalam Database

(70)

54

Gambar 6.3 : Bukti Data Kabupaten Purworejo sudah Terinputkan ke dalam Database

Gambar 6.4 : Bukti Data Kabupaten Semarang sudah Terinputkan ke dalam Database

Gambar 6.5 : Bukti Data Kota Pontianak sudah Terinputkan ke dalam Database

(71)

55

Gambar 6.6 : Bukti Data Kabupaten Alor sudah Terinputkan ke dalam Database

Gambar 6.7 : Bukti Data Kabupaten Ngawi sudah Terinputkan ke dalam Database

Gambar 6.8 : Bukti Data Kabupaten Rokan Hulu sudah Terinputkan ke dalam Database

(72)

56

Gambar 6.9 : Bukti Data Kabupaten Sleman sudah Terinputkan ke dalam Database

Gambar 6.10 : Bukti Data Kabupaten Tapanuli Tengah sudah Terinputkan ke dalam Database

6.2.2. Mengecek Tabel Monitoring Covid-19

Pengujian ini dilakukan membuka menu ‘Job Status’ pada Sidebar Monitoring yang ada di web Pedulilindungi.

(73)

57

Gambar 6.11 : Tabel Monitoring Job Status Covid-19

Gambar 6.12 : Grafik Monitoring Job Status Covid-19

6.2.3. Mengecek Tabel Monitoring User

Pedulilindungi

(74)

58

6.2.4. Mengecek Kolom Zona Pada Tabel

covid_compile_fix

Gambar 6.14 : Bukti Unique Value Pada Table covid_data_v02

6.2.5. Mengecek Kolom Total Positif Pada Tabel

covid_compile_fix

Gambar 6.15 : Bukti Perubahan Kolom total_positif Table covid_data_v02

(75)

59

6.2.6. Mengecek Nama Provinsi, Kabupaten/Kota,

Kecamatan, dan Kelurahan yang Sudah di

Ganti

Gambar 6.16 : Isi File untuk Mapping Nama Provinsi, kabupaten/Kota, Kecamatan, dan Kelurahan

(76)

60

(77)

61

BAB VII

KESIMPULAN DAN SARAN

Kesimpulan yang didapat setelah melakukan pengumpulan dan pengolahan data Covid-19 pada aplikasi Pedulilindungi adalah sebagai berikut:

a. Data yang telah diinputkan dapat digunakan oleh pengguna Aplikasi Pedulilindungi.

b. Library Python yang saya gunakan untuk mendapatkan data Covid-19 tersebut merupakan library umum yang digunakan untuk mengekstrak data dari website.

c. Dengan adanya tabel monitoring data kabupaten Covid-19 dan tabel monitoring PIC dapat memudahkan handler untuk mengingatkan agar data kabupaten covid-19 tersebut atau user tersebut bisa diperbaharui.

(78)

62

DAFTAR PUSTAKA

[1] Telkom. (n.d.). Retrieved September 8, 2020, from https://www.telkom.co.id/sites/about-telkom/id_ID/page/profil-dan-riwayat-singkat.

[2] Belajar Python Dasar : Memahami Jupyter Notebook dan cara menggunakannya. (2019, October 21). Retrieved September 8, 2020, from https://ngodingdata.com/memahami-jupyter-notebook-dan-cara-menggunakannya/.

[3] Rizal, F. (2019, December 20). Database Manager Terbaik dan Gratis Yang Bisa Kalian Gunakan. Retrieved September 8, 2020, from https://blog.devhoz.com/database-manager-terbaik-dan-gratis-yang-bisa-kalian-gunakan/.

[4] Belajar Python Dasar : Memahami Jupyter Notebook dan cara menggunakannya. (2019, October 21). Retrieved September 8, 2020, from https://ngodingdata.com/memahami-jupyter-notebook-dan-cara-menggunakannya/.

[5] Pangkalan data. (2020, June 26). Retrieved September 8, 2020, from https://id.wikipedia.org/wiki/Pangkalan_data.

[6] Web Scraping dengan Python dan BeautifulSoup. (2018, December 17). Retrieved September 8, 2020, from https://devtrik.com/python/web-scraping-dengan-python-dan-beautifulsoup/.

[7] Team, D. (2018, November 16). Web Scraping: Panduan dan Teknik-Tekniknya. Retrieved September 8, 2020, from https://www.dewaweb.com/blog/web-scraping-panduan-dan-teknik-tekniknya/.

(79)

63

BIODATA PENULIS

M Thalut Nadhil Q, lahir pada

tanggal 10 April 2000 di Semarang.

Penulis merupakan mahasiswa yang

sedang

menempuh

studi

di

Departemen Informatika Institut

Teknologi

Sepuluh

Nopember

(ITS).

Penulis

aktif

dalam

berorganisasi

di

Himpunan

Mahasiswa

Teknik

Computer-Informatika tahun 2019/2020 dalam departemen Dalam Negeri

sebagai staff dan di Himpunan Mahasiswa Teknik

Computer-Informatika tahun 2020/2021 dalam departemen Dalam Negeri

sebagai staff ahli.

Gambar

Gambar 4.2 : Tabel Pada Web Kabupaten Paser
Gambar 4.3 : Tabel Pada Web Kabupaten Purworejo df2['kabkot'] = 'Paser'
Gambar 4.4 : Tabel Pada Web Kabupaten Semarang  from urllib.request import urlopen
Gambar 4.5 : Tabel Pada Web Kota Pontianak     from urllib.request import urlopen
+7

Referensi

Dokumen terkait

Dari beberapa uraian diatas dapat digaris bawahi bahwa penelitian dalam rangka upaya meningkatkan kemampuan berbicara melalui permainan wayang kertas pada anak usia 5-6 tahun di

1) Dengan bentuknya yang besar peserta didik dapat melihat dengan jelas setiap halaman yang terdapat dalam buku tersebut. book kegiatan pembelajaran akan lebih terfokus,

lingkungannya maka free body diagramnya hanya menunjukkan 2 gaya saja yang bekerja pada. ujungnya Yaitu

Pelaksanaan supervisi terhadap peningkatan kinerja guru yang dilakukan oleh pengawas madrasah merupakn suatu bimbingan dan dorongan dari pihak yang berkompeten

Sedangkan sensor gas transistor berdasarkan gasmbar 21, sensor gas dengan lapisan polianilin di atas polianilin-polipirol terlihat dengan jelas memberikan nilai

Standar Minimal Spesifikasi teknis Balai Penyuluhan KB disajikan pada lampiran data, dan Pemerintah Kabupaten dan Kota dapat mengembangkan spesifikasi teknis sesuai

Kepulauan Riau tercantum dalam:.. c)Program-Program RPJMD Tahun 2010-2015 yaitu:. • Program Peningkatan Peran Perempuan

Pada kotak dialog berikutnya, terlebih dahulu klik tanda [ + ] untuk menampilkan item yang ada, lalu klik pada kotak item seperti berikut Gambar 7.37, non-aktifkan pilihan lain