tutorial web scraping python beautifulsoup
Data Collection, Python

Web Scraping Part 1 : Tutorial Web Scraping dengan BeautifulSoup di Python

Dalam melakukan data analytics dibutuhkan sumber data terlebih dahulu. Sumber data sangat melimpah di internet baik berbentuk text maupun format lainnya.

Salah satu cara untuk mendapatkan data 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.

Sebelum melakukan web scraping dibutuhkan pemahaman bahasa HTML karena sebagaian besar website membutuhkan HTML sebagai bahasa markup-nya

Komponen Halaman Web

Website biasanya 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

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

Tutorial Web Scraping dengan BeautifulSoup di Python

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

Tutorial Web Scraping dengan BeautifulSoup di Python

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

Tutorial Web Scraping dengan BeautifulSoup di Python

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

Tutorial Web Scraping dengan BeautifulSoup di Python

Misal ingin melihat kode HTML dari halaman quote paling atas

Tutorial Web Scraping dengan BeautifulSoup di Python

Selanjutnya kita lihat lebih kode HTML lebih detail dari quote pertama

Tutorial Web Scraping dengan BeautifulSoup di Python

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

Tutorial Web Scraping dengan BeautifulSoup di Python

Element author (Albert Einstein) diapit oleh tag <span> dan <small> dengan class author

Tutorial Web Scraping dengan BeautifulSoup di Python

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

Leave a Reply

Your email address will not be published. Required fields are marked *