Memperoleh Data Informasi Demografi dari Nomor KTP dengan Python dalam Waktu 4 Milisekon (BONUS TUTORIAL SCRAPING)

Ziyad Syauqi
3 min readSep 30, 2019

--

Peta Indonesia di tampilan belakang KTP RI (sumber)

Assalamualaikum Warohmatullahi Wabarokatuh.

Sesuai dengan judulnya, pada kesempatan kali ini saya akan membagikan langkah-langkah memperoleh informasi demografi seseorang dari nomor KTP. Tutorial ini terdiri dari:

  1. Installation
  2. Scraping with Beautifulsoup
  3. Create python database and function
  4. Testing !

Oke sebelum kita masuk ke tutorial, alangkah lebih baiknya kita pahami dulu kode yang tertera pada nomor KTP.

Nomor KTP terdiri dari 16 digit. Enam digit pertama merepresentasikan kode wilayah. 4 digit pertama dapat kita peroleh dari wikipedia, sedangkan 2 digit setelahnya belum saya dapatkan datanya (huhuhu). Nah, dari wikipedia inilah datanya coba kita scraping. Enam digit selanjutnya (digit ke 7–12) merepresentasikan tanggal lahir dengan format ddmmyy (dd = hari, mm = bulan, yy = dua digit terakhir dari tahun). pada digit hari apabila harinya ada penambahan sebanyak 40 maka gendernya adalah perempuan, jika tidak maka gendernya adalah laki-laki. Digit-digit berikutnya (13–16) adalah kode registrasi.

Sudah Siap? langsung saja kita skuy…

  1. Installation

Sebenarnya program yang kita butuhkan hanyalah python dan karena sudah banyak tutorial di internet mengenai instalasi python, bagian instalasi python ini akan saya skip. Selain itu saya menggunakan jupyter notebook untuk menjalankan code yang telah dibuat.

Setelah selesai dengan instalasi itu semua, selanjutnya install packages pandas, requests, dan bs4 (Beautifulsoup). setelah semuanya terinstall mari kita jalankan jupyter notebook kita

2. Scraping

Mungkin ini akan jadi tahapan yang paling menantang (siap-siap kencangkan sabuk pengaman).

Import Packages dan Scrapping

Seperti code python pada umumnya, kita selalu mengawali semuanya dengan import packages selanjutnya pada line-9 saya mendefinisikan url yang akan kita scrap dan mengambil datanya menggunakan package requests data yang kita peroleh adalah HTML elements dari url website yang kita definisikan di awal.

Selanjutnya pada line-12 kita mengubah data (HTML elements) menjadi suatu struktur yang bisa dibaca/diolah dengan `beautiful` oleh BeautifulSoup.

ketika data yang kita ambil telah menjadi soup, maka kita dapat menggunakan methods yang ada pada soup tersebut. Nah… methods yang paling sering digunakan yaitu findAll. Sebagai contoh pada line-15, Pada methods ini kita mengambil semua element pada HTML yang memiliki awalan ‘table’ dan memiliki attribut ‘class=wikitable’. Selanjutnya pada line-20, dengan methods yang sama saya mengambil semua element di HTML yang memiliki awalan ‘span’ dengan attribut ‘class=mw-headline’

Agar lebih jelas, perhatikan code di atas. Pada code diatas saya telah memberikan comment/note sebelum setiap linecodenya, silakan dibaca ya…

NOTE : Jika kalian ingin mengambil suatu element di HTML langkah yang paling mudah adalah kunjungi website yang mau kalian scrap lalu tekan CTRL + SHIFT + I atau CTRL + U lalu search text yang tampil di website tersebut, lihat apa attributnya dan masukkan kedalam code soup anda.

Looping dan append setiap element yang di scrap ke list

Pada tahap ini kita memasukkan setiap element pada tabel yang kita scrap ke list yang kita buat untuk membuat dataframe pada python-pandas.

3. Create Database and Function

Membuat Dataframe dari kumpulan list yang berisi hasil scraping

Selanjutnya, kita tinggal membuat Dataframe dengan mengisi kolom-kolom dengan list yang bersesuaian.

function menampilkan data demografi dari nomor KTP

Selanjutnya, saya membuat function pada python untuk mengubah nomor KTP menjadi data demografi.

Pertama, function akan mengecek panjang nomor KTP harus 16 digit. Selanjutnya, tabel yang telah kita buat tadi (dari hasil scrap) digunakan untuk melakukan lookup 4 digit pertama pada KTP. Jika 4 digit pertama pada inputan KTP tidak ditemukan pada tabel maka akan keluar teks “input salah”. Terakhir, kita akan mencari tanggal lahir dan jenis kelamin melaui digit ke-7 sampai ke-13 dengan cara yang telah saya sebutkan diawal tulisan medium ini.

Sekarang kita sudah selesai melakukan semuanyaa tinggal tahapan testing! Viola!

4. Testing !

contoh code untuk testing script

Silakan jalankan code diatas dan anda akan mendapatkan hasil yang luar biasa !

inilah hasil yang luar biasa itu !

Perhatikan bahwa setiap pengecekan nomor KTP hanya membutuhkan waktu 0 sampai 4 milisekon, cukup cepat bukan??

Terimakasih telah membaca artikel ini, seperti kata pepatah

Tulisan yang paling bagus adalah tulisan yang tidak pernah dipublikasikan

Maka pasti tulisan saya ada kekurangannya, feel free to contact me via LinkedIn. Selamat Belajar ! :)

--

--