Tutorial web scraping dengan beautifulsoup python
Data Collection, Python

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

Pada tutorial part 5 kita akan menyimpan hasil scraping dengan BeautifulSoup di Python ke dalam format .csv agar mudah diproses.

Data halaman website adalah sumber data yang tidak terstruktur. Diperlukan mekanisme untuk membuatnya lebih terstruktur agar data lebih mudah diproses dan dianalisa

Kita akan menggunakan library pandas di Python untuk menyimpan dan mengolah data yang sudah terstruktur ke dalam file berformat .csv

Library pandas

pandas adalah sebuah library di Python yang menyediakan struktur data dan analisis data yang mudah digunakan

Pastikan telah menginstall library pandas terlebih dahulu. Jika belum gunakan pip atau conda untuk menginstallnya

pip install pandas

Note : Cara install library Python dengan pip dan conda

Setelah berhasil instalasi pandas selanjutnya import library pandas

import pandas as pd

Save Hasil Scraping

Kita akan melakukan modefikasi kode yang sama dari tutorial part 4 dalam melakukan web scraping

Buat List untuk menampung hasil scraping

data = []

Kemudian gunakan fungsi append untuk memasukkan quote, author dan tags ke dalam List yang telah dibuat

data.append({
    'quote': quote,
    'author': author,
    'tags': tags
})

Selanjutnya setelah iterasi selesai convert List menjadi DataFrame pandas dan simpan ke dalam file csv

df = pd.DataFrame(data)

df.to_csv('all_quotes.csv', encoding="utf-8")

Jika kita buka file all_quotes.csv hasilnya adalah

Tutorial web scraping dengan beautifulsoup python

Final Code

Berikut adalah final code untuk web scraping semua quote untuk semua halaman dan menyimpannya ke dalam file .csv

from bs4 import BeautifulSoup
import requests
import pandas as pd

data = []

# quotes di halaman 1 - 10
for page in range(1,11):

    if page == 1: 
        url = "http://quotes.toscrape.com"
    else: 
        url = "http://quotes.toscrape.com/page/"+str(page)

    page = requests.get(url)
    soup = BeautifulSoup(page.content, 'html.parser')


    quotes = soup.find_all('div', class_='quote')
    
    for q in quotes:
        quote = q.find('span', class_='text').text
        author = q.find('small', class_='author').text
        tags = [tag.text for tag in q.find('div', class_='tags').find_all('a', class_='tag')]

        data.append({
            'quote': quote,
            'author': author,
            'tags': tags
        })


df = pd.DataFrame(data)

df.to_csv('all_quotes.csv', index=False, encoding="utf-8")

Descriptive Analytics

Salah satu metode analisis adalah analisis deskriptif yang merupakan analisis dasar dari sumber data

Kita akan gunakan jupyter notebook dengan pandas untuk melakukan analisis deskriptif

Note : Tutorial Jupyter Notebook

Kita dapat membaca file all_quotes.csv melalui pandas untuk melakukan analisis data sederhana

Memanggil library pandas dan membaca file all_quotes.csv

Melihat preview 5 record teratas

Tutorial web scraping dengan beautifulsoup python

Melihat nama kolom dari data

Melihat informasi lebih detail dari data berdasarkan nama kolom dan jumlah record-nya

Tutorial web scraping dengan beautifulsoup python

Melihat deskripsi data seperti jumlah data, data yang unik, frequensi dan sebagainya

Tutorial web scraping dengan beautifulsoup python

Mencari tahu jumlah quote berdasarkan author-nya (Albert Einstein paling banyak dengan 10 quote)

Untuk detail library pandas akan dicover dengan tutorial lainnya yang lebih detail untuk analisis data

Selamat anda telah menyelesaikan rangkaian tutorial untuk web scraping dengan BeautifulSoup di Pytyhon

Silahkan berekplorasi dengan website lainnya sebagai sumber data dengan teknik yang telah kita pelajari

Keep Coding 😀

5 Comments

  1. misal udah bisa tutor yang di atas lalu yang format csv data. buat apa ya gan. maap newbie

    1. datanya dapat dianalisis untuk dicari knowledge didalamnya..

  2. kalo untuk website yang menggunakan ajax di tiap halamannya caranya gimana min?

    1. pakai splash atau selenium

  3. teruskan gan

Leave a Reply

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