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
ii
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
iv
vi
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:
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
ix
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
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
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
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
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
xv
xvi
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.
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.
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
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
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.
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.
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.
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
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.
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.
11
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.
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.
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
15
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")
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'
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' )
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)
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')
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' )
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']
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' )
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)
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' ]]
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' )
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")
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',
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' )
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
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
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'
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
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"})
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')
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 = []
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']
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' )
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
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 ']]
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' )
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
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']
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' )
45
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
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
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
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')
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)
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’.
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.
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
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
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
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.
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
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
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
60
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.
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/.
63