Python Web Crawling. Iseng Bermanfaat, Crawling Data Web Perpustakaan

(Getty Images/ People Images)

Sebagai mahasiswa tingkat akhir, galau terkait judul penelitian merupakan hal yang wajar. Butuh banyak bacaan maupun referensi judul penelitian yang diperlukan. Pilihannya adalah ke perpustakaan kampus. Bisa sekedar skimming melihat judul-judul penelitian terdahulu sampai membaca abstraknya.

Saya sebagai mahasiswa tingkat akhir merupakan salah satu yang galau terkait penentuan judul dan topik penelitian. Mesti ke perpustakaan kampus mungkin hanya sekedar melihat-lihat judul menjadi hal yang bagus. Perpustakaan sendiri memiliki web perpustakaan yang dapat kita gunakan untuk melihat judul yang sesuai. Jika klop, tandai kode penelitian dan ke kampus untuk membaca penelitian tersebut lebih dalam.

Namun, ada keterbatasan dalam pencarian judul di web perpustakaan sendiri. Saya merasa hasil pencarian berdasarkan kata kunci belum memiliki fitur ordering dan sorting berdasarkan tanggal maupun kode jurnal. Daftar penelitian pun terbatas yang bisa dilihat karna tidak ada fitur page length untuk mengatur banyak daftar jurnal dalam 1 tabel. Namun punya kelebihan dengan adanya filter judul berdasarkan alfabet serta fitur find similar jurnal. Fitur find similar ini pun kadang return error 500 internal error sehingga saya berpikir untuk mencoba melakukan sesuatu.

Dengan adanya keterbatasan itu, saya memiliki ide untuk melakukan crawl semua data judul, abstrak, kode, tahun dan author dari jurnal yang ada di database perpustakaan kampus. Saya disini menggunakan script python untuk melakukan crawling. Beberapa langkah yang saya lakukan akan saya jelaskan di bawah.

  1. Mempelajari bagaimana cara kerja sistem web perpustakaan. Dengan melakukan riset dan observasi terkait perpindahan rute url. Hal ini dilakukan untuk mendapatkan pola / pattern agar dapat mengetahui implementesi crawler berada dilevel apa. Apakah susah, sedang atau gampang.
  2. Menentukan langkah dan apa saja source library python yang digunakan untuk crawling
  3. Implementasi kode. Melakukan penyesuaian terhadap data-data apa saja yang mau diekstrak dari web.
  4. Lalu trial and error. Disini dapat diketahui pemanggilan uri di web perpustakaan tidak dapat dilakukan secara sinkronous / terus menerus. Jadi saya melakukan jeda selama beberapa detik dan retries terhadap panggilan yang gagal. Lalu menemukan bahwa, pemanggilan uri akan berhenti jika ada data penelitian yang tidak lengkap. Disini saya mengetahui ada data yang kadang tidak memiliki judul atau author.
  5. Lalu melakukan pemanggilan terhadap script.

Saya melakukan pemanggilan script dari trial and error sampai benar benar berhasil memakan waktu 1 jam karena teknis pemanggilan dan data. Untuk eksekusi final, saya membutuhkan waktu 30 menit lagi untuk crawling data dengan memanggil uri untuk mengambil 1000-an data tersebut.

Untuk python library yang saya gunakan tidak banyak. Hanya CSV, requests, Beautiful Soup, dan HTTPError. Dengan sedikit bantuan mbah google saya dapat menemukan library yang dibutuhkan.

Ada juga pertanyaan yang membuat saya penasaran, yaitu apakah web crawling ini ilegal?. Disebut ilegal ataupun tidak tergantung penggunaannya. Dalam hal ini, saya menggunakan untuk kepentingan pribadi saya yaitu untuk memutuskan judul dan topik berdasarkan referensi hasil crawling. Crawling yang tidak baik adalah yang tujuannya untuk mendapatkan keuntungan misal bisnis komersil atau diberikan kepada orang lain [1]. Jadi, saya tidak akan menyebarkan source code dan hasil dari crawling yang saya lakukan. Silahkan dapatkan sendiri. Do it on your own.

Sekian dari saya, semoga bermanfaat guys.

Catatan Kaki:
[1] https://towardsdatascience.com/is-web-crawling-legal-a758c8fcacde

Customizing Datatables for your Web Apps

Sebagai web developer ataupun fullstack programmer pasti ada request untuk sebuah pengelolaan terhadap data didalam sebuah sistem. Data terkait suatu entiti yang bervariasi yang dibutuhkan oleh perusahaan. Pengelolaan ini mencakup seperti data terkait produk, marketing dan data lainnya.

Untuk dapat melakukan pengelolaan terhadap data dibutuhkan visualisasi terhadap data tersebut. Baik data terstruktur dan data tidak terstruktur. Tabular / Tabel merupakan salah satu cara yang sesuai dalam melakukan visualisasi data tersebut untuk memenuhi kebutuhan user. Hal ini dapat dilakukan dengan berbagai cara. Ada programmer yang membuat dari nol (create from scratch) visualisasi data tabel dan ada juga yang menggunakan Plugin.

Saya sendiri juga sebagai seorang developer juga pernah melakukan pembuatan tabel secara manual hingga melakukan riset terhadap penggunaan package / plugin yang dapat mempopulasi dan visualisasi data ke dalam sebuah tabulasi. Mulai dari yang berbayar hingga yang gratis penggunaannya. Salah satu tabel plugin yang dapat digunakan adalah DataTables.

DataTables merupakan sebuah complete Plugin yang dibangun diatas library JQuery Javascript. Sangat fleksibel sehingga memuat hingga mencapai 1 – 5 juta data dalam satu tabel. Plugin ini bersifat open source dan memiliki banyak fitur yang ditambahkan oleh berbagai developer. Salah satu fitur yang sangat populer adalah on tabel update yang telah disediakan. Fitur yang paling banyak saya pakai adalah yang dikembangkan secara open oleh developer lain. salah satunya adalah fitur checkbox didalam tabel.

Dalam penggunaannya, developer dapat melakukan kustomisasi terhadap penggunaan DataTables. Untuk disesuaikan dengan kebutuhan dari user seperti fitur pagination, export-to-excel-pdf, searching, ordering, responsive dan fitur lainnya.

Masalah muncul ketika data yang divisualisasikan terlalu besar sehingga waktu yang dibutuhkan untuk mempopulasi data membutuhkan waktu lebih banyak. Untuk mengatasi hal tersebut, DataTables memiliki pilihan dalam memuat data dengan menggunakan pilihan server-side. Server-side berfungsi untuk memuat data-data sesuai yang dibutuhkan sesuai dengan permintaan visualisasi dari client. Seperti data yang di load disesuaikan dengan tabel scroller atau pagination dengan menggunakan server dalam memproses data.

Datatables juga telah banyak diterapkan pada template dashboard gratis dan premium. Hal ini membuat tema dari DataTables dapat menyesuaikan tema dari template tersebut seperti Bootstrap dan Materialize. Overall, banyak keuntungan yang didapatkan dari penggunaan dari DataTables ini dengan status dari plugin ini open source sehingga dapat digunakan oleh banyak orang.

Konsep MVC

Web Development merupakan istilah yang sering digunakan dalam pengembangan sebuah sistem informasi dalam bentuk digital yang bisa diakses melalui suatu halaman HTTP. Web Development berkembang dengan pesat yang dapat dilihat dari perkembangan bahasa yang digunakan dalam pembuatannya.

Pada tahap awal pengembangan Web bertujuan menampilkan informasi yang bersifat statis menggunakan HTML saja. Sesuai dengan perkembangan dari permintaan, ada keinginan dari user yang membutuhkan informasi yang ditampilkan dinamis dan berubah-ubah. Ada proses input dan output terhadap sebuah informasi yang ditampilkan hingga Web Development membutuhkan Database sebagai tempat penyimpanan data yang bersifat dinamis. Pembuatan Web Statis ini melibatkan PHP sebagai penghubung antara client dengan server Database.

Pada tahap ini, pembuatan Web bersifat dinamis dengan menggunakan Database sangat terkenal. Hal ini dapat dilihat dengan pencampuran penggunaan antara HTML, CSS, dan PHP dalam satu sistem Web. PHP sendiri biasanya menjadi kode sisipan dalam HTML dan CSS berbentuk variabel yang memiliki isi berubah-ubah sesuai state di Database. PHP dapat membantu untuk mengembangkan aplikasi Web yang cukup kompleks, handal, dan cepat.

Dengan pencampuran HTML, CSS, dan PHP menjadikan pemrograman web menjadi lebih kompleks. Dengan konsep pemrograman tradisional dimana UI, Logic dan data aplikasi ditulis dalam bentuk satu file sehingga menjadi tidak dapat di mantain dengan baik, tidak dapat di test sehingga menjadi terlalu kompleks. Akibat terlalu kompleks, menjadikan adanya proses repeat untuk sebuah hal detail dalam pengerjaan dan memberikan effort yang besar pada Programmer. Hal ini terjadi ketika mereka memiliki Project yang sudah selesai dan selanjutnya memiliki Project lain yang hampir sama gambarannya dengan yang sebelumnya, namun mereka harus mengerjakan Project tersebut dimulai dari awal (from-scratch). Dimana effort yang diberikan sebenarnya bisa dikurangi. Dari hal tersebut muncul ide yang disebut dengan konsep MVC (Model-View-Controller)

Bagan Kerangka MVC

Konsep MVC memberikan pembedaan pada aspek logika aplikasi seperti input, bisnis, dan output. Menggunakan MVC telah diberikan pembeda untuk setiap logika. Terkait output terhadap user berupa user interface (UI) terdapat pada bagian View. Logika untuk input terdapat pada bagian Controller, sedangkan logika bisnis terdapat pada Model. Dengan memberikan pembagian tersebut maka akan dapat membantu dalam mengelola kompleksitas pada pembuatan aplikasi web sehingga programmer dapat fokus pada salah satu aspek dalam proses implementasi. Contohnya adalah programmer dapat fokus pada bagian View tanpa ada ketergantungan dengan logika flow bisnis yang diinginkan.

Komponen dari Konsep Kerangka MVC:

  • Models. Model merupakan bagian dari aplikasi yang merupakan implementasi dari domain data. Model berfungsi sebagai sebuah state untuk menampilkan, menerima, dan menyimpan data kedalam database. Model bisa juga merepresentasikan tabel yang ada pada Database dengan relasionalnya.
  • Views. View merupakan komponen yang menampilkan interface user. Biasanya UI berisi kerangka-kerangka tampilan yang telah digabungkan dengan data dari komponen Model.
  • Controllers. Controller adalah komponen yang menangani interaksi pengguna. Controller berisi logika pemrograman dari sisi backend dengan menggunakan Model sebagai data dan melakukan pemilihan view untuk dirender dan ditampilkan ke User.

Konsep MVC telah banyak diterapkan oleh ahli IT dalam mengembangkan aplikasi. Hal ini dilakukan untuk mempermudah pengembangan perangkat web maupun aplikasi dengan arsitektur MVC. Konsep berbanding jauh dengan pengembangan tradisional terkait dengan keuntungan dalam proses penggunaan kembali kode (reusable code), pengembangan simultan dan lainnya. MVC Framework sudah tersedia dalam pengembangan berbagai platform seperti PHP, .Net, Java. Banyak open source yang menggunakan MVC seperti Laravel, Yii, Code Igniter dan lainnya.