Pengembangan Artificial Intelligence (AI) berkembang pesat saat ini. AI membuat mesin bisa berfikikir dan bertindak seperti manusia. Dalam AI dikenal istilah Machine Learning (ML) yang merupakan subset dari AI
Konsep ML belajar dari data melalui proses learning dalam data analytics. Sistem belajar layaknya anak kecil yang tidak mengerti apapun dan diajarkan oleh orang tuanya. Dalam ML bahan ajar yang diajarkan ke sistem adalah data
Contents
Ilmu Data
Saat ini semua orang membicarakan tentang AI dan ML. Di beberapa kampus juga bahkan membuka prodi atau peminatan yang berhubungan AI, ML dan Data. Salah satunya adalah tempat saya mengajar yaitu Telkom University membuka prodi ilmu data (data science) serta membuka laboratorium dan pemintan tentang data dan AI
Dalam melakukan data analytics dibutuhkan sumber data terlebih dahulu. Saat ini sumber data sangat melimpah dan banyak ditemukan dimana saja baik berbentuk text maupun format lainnya. Salah satu sumber data yang melimpah adalah dari internet dan media sosial
Kadang kali data ini dapat dengan mudah kita ambil. Ada yang sudah menyediakan API untuk pengambilannya tetapi banyak lainnya yang harus kita usahakan sendiri. Salah satu cara untuk mendapatkan data teks di internet adalah dengan teknik web scraping
Web Scraping adalah cara untuk mengambil data dari halaman web ke dalam bentuk yang diinginkan seperti format csv atau json
Tentu saja ada etika dalam melakukan scraping data di internet. Terkadang beberapa website menyediakan Term of Service (TOS) agar konten websitenya dilarang untuk diambil
HTML, CSS dan Javascript
Sebelum melakukan web scraping dibutuhkan pemahaman bahasa HTML karena sebagaian besar website membutuhkan HTML sebagai bahasa markup-nya
Pengembangan website umumnya terdiri dari 3 elemen berikut:
- HTML
- CSS
- Javascript
HTML adalah komponen utama dalam membangun web dan dibagun dari tag-tag untuk menyusun heading, paragraf, table dan sebagainya
CSS adalah bahasa untuk membuat web terlihat lebih indah seperti warna, ukuran, posisi dan sebagainya
Javascript adalah bahasa digunakan untuk melengkapi web agar terlihat lebih interaktif
Sebelum melanjutkan materi web scraping silahkan pahami dulu HTML dasar di artikel Tutorial HTML dasar untuk pemula
Web Scraping
Oke kita lanjut ke implementasi web scraping
Untuk mengambil data di halaman website kita dapat memanfaatkan class / id atribut di HTML. untuk class dan id atribut sudah dijelaskan dimateri Tutorial HTML dasar untuk pemula.
Case web scraping adalah mengambil data quotes dari halaman webiste http://quotes.toscrape.com
website ini memang dikhususkan untuk belajar melakukan scraping jadi kita tidak perlu takut melakukan pelanggaran saat ambil konten websitenya
Di halaman http://quotes.toscrape.com terdapat 2 section yaitu bagian kiri yang terdiri dari title, quotes, author dan tags -nya
Sedangkan di bagian kanan terdiri dari tags yang paling populer
Website http://quotes.toscrape.com terdiri dari 3 komponen yaitu HTML, CSS dan Javascript
Inspect Element Website
Untuk mengetahui kode dari website http://quotes.toscrape.com kita bisa lakukan dengan teknik inspect element melalui browser
Caranya klik kanan di halaman website yang ingin diinspect kemudian pilih Inspect Element dan akan muncul halaman kode HTML dari halaman website tersebut. Posisi halaman inspect bisa diatur disebelah kiri halaman website atau dibawah
Kita juga bisa melakukan highlight terhadap komponen website tertentu dan melihat kode spesifiknya dengan menggunakan tombol panah di pojok halaman inspector dan pilih halaman website yang ingin dilihat kodenya
Misal ingin melihat kode HTML dari halaman quote paling atas
Selanjutnya kita lihat lebih kode HTML lebih detail dari quote pertama
Quote pertama dari Albert Einstein dengan quote βThe world as we have created it is a process of our thinking. It cannot be changed without changing our thinking.β diapit oleh tag <span>
dengan class atribut “text“
Element author (Albert Einstein) diapit oleh tag <span>
dan <small>
dengan class author
Sedangkan tags quote diapit oleh tag <div>
dengan class tags yang didalamnya menggunakan tag <meta>
dengan class keywords
BeautifulSoup
BeautifulSoup merupakan library python digunakan untuk melakukan web scraping dalam package bs4.
untuk install bs4 gunakan pip atau conda
pip install bs4
Note: Silahkan buka materi cara install library di Python
Setelah sukses terinstall cara memanggil library BeautifulSoup adalah sebagai berikut
from bs4 import BeautifulSoup
Contoh penggunaan BeautifulSoup
Misal kita mempunyai kode HTML yang disimpan dalam sebuah string di dalam file python
dokumen = ''' <html> <head> <title>Tutorial BeautifulSoup</title> </head> <body> <p class="judul">Judul Dokumen</p> <p class="paragraf">Ini adalah contoh paragraf</p> <a href="https://ngodingdata.com" class="url">Ngodingdata</a> </body> </html> '''
Kemudian gunakan library BeautifulSoup untuk mengekstrak kode HTML
from bs4 import BeautifulSoup html_soup = BeautifulSoup(dokumen, 'html.parser') print(html_soup)
Hasilnya adalah
Fungsi find()
Untuk mengambil potongan kode HTML atau konten dari HTML gunakan fungsi find()
Fungsi find()
akan mengambil data berdasarkan tag HTML. Jika terdapat tag HTML yang sama lebih dari satu maka yang diambil adalah tag yang paling atas di halaman HTML
judul = html_soup.find('p') print(judul)
Hasilnya
Jika ingin mengambil nilai dari tag <p>
dengan nama class tertentu maka tambahkan parameter class_ di dalam fungi find()
Misal kita tambahkan parameter class_ judul
dan paragraf
untuk mengambil nilai dari tag <p>
dengan kedua class tersebut
judul = html_soup.find('p', class_='judul') paragraf = html_soup.find('p', class_='paragraf') print(judul) print(paragraf)
untuk mengambil hanya konten dari HTML (tanpa kode HTMLnya) tambahkan sintaks text
diakhir statement
judul_saja = html_soup.find('p', class_='judul').text print(judul_saja)
Fungsi find_all()
Fungsi find()
hanya dapat mengekstrak satu ouput sedangkan biasanya banyak tag HTML yang sama yang ingin diambil semuanya.
Untuk mengambil konten HTML dengan tag yang sama gunakan fungsi find_all()
Fungsi find_all()
dapat mengambil sem
all_paragraf = html_soup.find_all('p') print(all_paragraf)
Biasanya fungsi find_all()
digunakan untuk mengambil data yang berbentuk table atau list
Sebenarnya masih banyak fungsi lain dari library BeautifulSoup tetapi fungsi find()
dan find_all()
paling banyak digunakan untuk ekstrak data dari website.
Berikut kode lengkap dari case BeautifulSoup diatas
from bs4 import BeautifulSoup dokumen = ''' <html> <head> <title>Tutorial BeautifulSoup</title> </head> <body> <p class="judul">Judul Dokumen</p> <p class="paragraf">Ini adalah contoh paragraf</p> <a href="https://ngodingdata.com" class="url">Ngodingdata</a> </body> </html> ''' html_soup = BeautifulSoup(dokumen, 'html.parser') judul = html_soup.find('p', class_='judul') paragraf = html_soup.find('p', class_='paragraf') judul_saja = html_soup.find('p', class_='judul').text print(judul) print(paragraf) print(judul_saja) all_paragraf = html_soup.find_all('p') print(all_paragraf)
Tutorial selanjutnya adalah mengimplementasikan BeautifulSoup di website http://quotes.toscrape.com/ yang telah kita bahas struktur webnya diatas
Wah dari telkom university juga, salam kenal mas. Apakah beautifulsoup berjalan secara concurrent atau ngga mas? Kelebihan kita scraping menggunakan python apa ya mas?
salam kenal mas.. dari telyu juga mas?
beautiful soup tidak berjalan secara concurrent alternatifnya bisa menggunakan scrapy. cuma bs lebih mudah dipelajari dan digunakan
mungkin kelebihannya karena python mudah dipelajari, komunitasnya besar dan library buat scraping powerful π