Cara Web Scraping dengan Python dan BeautifulSoup


Cara Web Scraping dengan Python dan BeautifulSoup

Web scraping, web harvesting, atau bisa disebut juga web data extraction merupakan teknik pengambilan data tertentu dari suatu web. Seperti namanya, web data extraction, kita menggunakan teknik web scraping ini untuk mengekstrak data dari sebuah situs ke dalam program kita. Hal ini dilakukan ketika situs yang kita ingin ambil datanya tidak menyediakan API sehingga kita harus secara manual mengambil data dari situs tersebut.

Di Python sendiri ada banyak library untuk melakukan web scraping. Namun, kali ini kita akan belajar melakukan web scraping dengan menggunakan library Python yang cukup populer, yaitu BeautifulSoup.

BeautifulSoup adalah sebuah library Python yang digunakan untuk mem-parse dokumen HTML dan XML.
Nah kali ini saya akan memberikan sedikit ilmu tentang web scraping atau pengambilan data dari sebuah situs dengan pemrograman Python.

Instalasi BeautifulSoup

Untuk para pengguna Linux khususnya distro Debian dan cucu-cucunya bisa melakukan instalasi BeautifulSoup dengan package manager.
# Instalasi pada Python versi 2
$ sudo apt-get install python-bs4
# Instalasi pada Python versi 3
$ sudo apt-get install python3-bs4
Atau bisa juga langsung menggunakan pip.
# pip pada Python versi 2
$ pip install beautifulsoup4
# pip pada Python versi 3
$ pip3 install beautifulsoup4
Kenapa harus BeautifulSoup4? Karena developer BeautifulSoup sudah menutup akses untuk versi di bawah 4 sehingga kita tidak dapat menggunakan BeautifulSoup yang versinya di bawah 4.

Web Scraping

Sebagai contoh, saya akan melakukan web scraping pada blog ini (aplokoid.com). Saya akan mengambil judul dari artikel pada situs aplokoid.com.
Hal pertama yang kita lakukan adalah membuat file terlebih dahulu. Agar mudah, kita namakan saja filenya dengan latihanscrape.py. Lakukan import BeautifulSoup dan requests. Library requests akan kita gunakan untuk mengambil keseluruhan halaman situs dengan kode seperti berikut.
from bs4 import BeautifulSoup
import requests

get = requests.get("https://aplokoid.com")
print(get.status_code)
Kode status_code akan menghasilkan output "200" yang berarti halaman tersebut memberikan respon 200 OK dan dapat kita lakukan scraping. Kita hapus print(get.status_code) dan deklarasikan variabel baru untuk mem-parse kode HTML pada variabel get sehingga kodenya akan menjadi.
from bs4 import BeautifulSoup
import requests

get = requests.get("https://aplokoid.com")
bs = BeautifulSoup(get.text, 'html.parser')
Setelah itu, kita perlu melakukan inspect element pada situs AploKoid untuk mengetahui tag, id, dan class. Tag, id, dan class akan kita gunakan untuk mengambil data dari artikel di AploKoid.


Kita berhasil mendapatkan struktur HTML dari artikel di AploKoid. Ternyata ada di dalam tag div dengan id Blog1 dan informasi artikel berada di tag div dengan class post-info. Nah, kita dapatkan judulnya ada di tag a.
Langsung saja kita tuliskan kodenya.
from bs4 import BeautifulSoup
import requests

get = requests.get("https://aplokoid.com")
bs = BeautifulSoup(get.text, 'html.parser')
artikel = bs.find('div', id='Blog1')
title = artikel.find(class_='post-info')
print(title.find('a'))
Fungsi find() berguna untuk mencari sebuah tag dan class atau id-nya sehingga kita dapat mengambil sebuah tag tertentu di dalam situs. Dari kode di atas akan memunculkan output.
<a href="https://www.aplokoid.com/2020/10/cara-mudah-install-steam-di-linux-ubuntu.html">Cara Mudah Install Steam di Linux Ubuntu</a>
Untuk menghilangkan tag HTML pada output. Kita ganti print(title.find('a')) dengan print(title.find('a').text) sehingga outputnya akan menjadi.
Cara Mudah Install Steam di Linux Ubuntu
#from bs4 import BeautifulSoup
import requests

get = requests.get("https://aplokoid.com")
bs = BeautifulSoup(get.text, 'html.parser')
artikel = bs.find('div', id='Blog1')
title = artikel.find(class_='post-info')
print(title.find('a').text)
Dari implementasi di atas bisa kita simpulkan bahwa fungsi find() hanya mengambil satu data saja. Lalu bagaimana kita dapat mengambil banyak data sekaligus? Jawabannya adalah fungsi find_all(). Fungsi find_all() berguna untuk mencari semua tag yang diinginkan pada halaman situs. Untuk penggunaannya sama saja dengan find().
from bs4 import BeautifulSoup
import requests

get = requests.get("https://aplokoid.com")
bs = BeautifulSoup(get.text, 'html.parser')
main = bs.find('div', id='Blog1')
artikel = main.find_all(class_='post-info')
for title in artikel:
    judul = title.find('a')
    print(judul.text)
Kode di atas akan memunculkan output.
Itulah cara menggunakan BeautifulSoup. Implementasinya tidak terlalu sulit dan fungsi-fungsinya mudah digunakan.
Untuk dokumentasinya bisa dilihat di : crummy.com/software/BeautifulSoup/bs4/doc/

Selamat mencoba dan selamat beraktivitas.

Posting Komentar

0 Komentar