CPMK 0703. Mampu mengumpulkan data dari berbagai sumber dengan menerapkan metode tertentu seperti teknik scraping, crawling dan API. - regitapermata30/Praktikum-Data-Wrangling-Telkom GitHub Wiki
WEB SCRAPPING
2.1 Memahami dan Menjelaskan Cara Pengkoleksian Data
Sebelum memasuki teknik pengenalan pada web scrapping, disini kita harus memahami bagaimana cara pengkoleksian data pada proses scrapping pada web. Apa sih pengkoleksian data itu? Pengkoleksian data adalah Teknik pengumpulan data otomatis yang melibatkan pengambilan informasi dari halaman web dengan menggunakan program. Dilakukan dengan menggunakan Bahasa pemrograman seperti Python. Teknik pengkoleksian Data disini harus mengetahui dan mengidentifikasi sumber data. Data yang diambil dapat berupa teks, gambar, video, dll. Proses ini dilakukan dengan menggunakan perangkat lunak khusus yang disebut web scraper. Web Scraping merupakan teknik pengumpulan data otomatis dari halaman web, berikut adalah penjelasan langkah - langkah metode pengumpulan data pada web scraping :
- Identifikasi Sumber Data :
-
Pilih situs web atau halaman web yang akan di - scrape, misalnya Wikipedia.
-
Lakukan inspeksi web tersebut dengan klik kanan kusor lalu pilih menu inspeks
maka tampilan berikutnya seperti ini
-
Pastikan situs tersebut memperbolehkan pengumpulan data (cek aturan penggunaannya)
- Analisis Struktur HTML :
- Gunakan browser developer tools untuk menganalisis struktur HTML.
- Identifikasi elemen-elemen HTML yang mengandung data yang ingin diambil.
- Pemilihan Library dan Tools yang digunakan :
- Pilih bahasa pemrograman yang akan digunakan (contoh: Python, R) Kita disini lebih menggunakan python
- Gunakan library atau alat seperti Beautiful Soup dan Requests untuk Python.
2.2 Pengenalan Web Scrapping
Di bab ini, kita akan membangun web scraper yang dapat digunakan oleh seorang profesional data wrangling dalam tugas sehari-harinya menggunakan semua teknik yang telah kita pelajari sejauh ini. Bab ini didasarkan pada fondasi BeautifulSoup dan memperkenalkan berbagai metode untuk melakukan scraping halaman web dan menggunakan API untuk mengumpulkan data. Di dunia yang terhubung saat ini, salah satu keterampilan yang paling dihargai dan banyak digunakan oleh seorang profesional data wrangling adalah kemampuan untuk mengekstrak dan membaca data dari halaman web dan basis data yang dihosting di web. Sebagian besar organisasi meng-host data di cloud (publik atau pribadi), dan sebagian besar layanan mikro web saat ini menyediakan beberapa jenis API untuk pengguna eksternal untuk mengakses data.
2.3 Struktur HTML
HTML(Hypertext Markup Language) adalah bahasa penanda standar yang digunakan untuk membuat struktur dan konten halaman web. HTML terdiri dari sejumlah elemen yang mendefinisikan bagian bagian dari suatu halaman web.
Setiap node dari gambar diatas mewakili satu elemen dalam dokumen(web). Sebuah elemen selalu dimulai dengan < dan diakhiri dengan >.
Parsing HTML
2.4 Metode Pengumpulan Data dan Scraping
Metode pengumpulan data dan scraping melibatkan teknik untuk mengumpulkan dan ekstraksi data dari sumber internasional seperti website. Web scraping adalah salah satu teknik yang populer dalam pengumpulan data secara otomatis dan spesifik. Ini berguna ketika data yang diinginkan berjumlah sangat banyak atau disebut sebagai big data.
Ada dua cara metode web scrapping, yaitu metode manual dan otomatis. Metode manual menggunakan copy paste dari website, sementara metode otomatis menggunakan koding, aplikasi, atau extenson browser. Alat dan tools yang umum digunakan dalam web scraping termasuk Google Spreadsheets, Octoparse, dan lain-lain.
Fungsi utama dari web scraping adalah sebagai pengumpul data dan informasi, serta mempermudah analisis, monitoring harga di pasaran, dan analisis competitor. Namun, perlu diingat bahwa web scraping harus dilakukan dengan hati-hati dan etis agar tidak melanggar aturan privasi dan hak cipta.
Pada matakuliah Data Wrangling ini kita akan berfokus ke pengumpulan data dengan metode scraping dengan menggunakan tools python dan library BeautifulSoup
2.5 Modul BeautifulSoup (BS4)
Beautiful Soup adalah pustaka Python yang sangat berguna untuk melakukan web scraping, yaitu kegiatan mengekstrak informasi atau data dari halaman web. Pustaka ini menyederhanakan proses pengekstrakan data dari HTML atau XML, membantu dalam menjelajahi struktur dokumen dan menemukan elemen-elemen yang dibutuhkan.
Berikut adalah langkah-langkah umum menggunakan Beautiful Soup untuk web scraping
1. Instalasi Beautiful Soup:
Pastikan Anda telah menginstal Beautiful Soup di lingkungan Python Anda. Anda dapat menginstalnya menggunakan pip dengan perintah
pip install beautifulsoup4
2. Membuat Objek BeautifulSoup Buat objek BeautifulSoup dengan melewatkan kode HTML dari halaman web yang ingin Anda scrape, bersamaan dengan parser HTML yang digunakan (biasanya 'html.parser').
from bs4 import BeautifulSoup
import requests
url = 'https://www.scrapethissite.com/pages/forms/'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
3. Menggunakan Metode BeautifulSoup
Pencarian Elemen contoh judul dari website
title = soup.find('title')
title
Menjelajahi Struktur Dokumen
# Menemukan semua tag <a> (hyperlink) dalam dokumen
all_links = soup.find_all('a')
# Menemukan parent dari suatu elemen
parent_of_title = title.parent
parent_of_title
Ekstraksi Data dari Elemen
# Mengambil teks dari elemen <p> dengan kelas "lead"
div_element = soup.find('p', class_='lead')
teks = div_element.text.strip()
teks
Mengambil data nama tim dari elemen
# Mencari semua elemen <td> dengan kelas "name"
name_elements = soup.find_all('td', class_='name')
listt = []
# Menampilkan nama tim
for name_element in name_elements:
name = name_element.get_text(strip=True)
team_name = listt.append(name)
atau
# Mencari semua elemen <td> dengan kelas "name"
name_elements = soup.find_all('td', class_='name')
# Menyimpan nama tim dalam list
team_names = [name_element.get_text(strip=True) for name_element in name_elements]
team_names
When to get_text() dan When to Preserve Tags
.get_text() untuk menghilangkan semua tags dari dokumen yang Anda kerjakan dan mengembalikan string Unicode yang hanya berisi teks. Sebagai contoh, jika Anda bekerja dengan blok teks besar yang berisi banyak hyperlink, paragraf, dan tags lainnya, semuanya akan dihapus, Maka akan menyisakan blok teks tanpa tags. Memanggil .get_text() sebaiknya dilakukan sebagai langkah terakhir, sebelum Anda mencetak, menyimpan, atau memanipulasi data hasil scraping.
-
get_text():- Ketika hanya perlu konten teks: Jika Anda hanya tertarik mengekstrak konten teks dari halaman web tanpa mempertahankan tag HTML, Anda dapat menggunakan
get_text(). - Sebelum output akhir atau pemrosesan: Umumnya, Anda menggunakan
get_text()sebagai langkah terakhir setelah menemukan dan mengekstrak elemen HTML yang relevan. Ini mengonversi data yang diekstraksi menjadi teks biasa. Contoh
judul = soup.find('h1').get_text() - Ketika hanya perlu konten teks: Jika Anda hanya tertarik mengekstrak konten teks dari halaman web tanpa mempertahankan tag HTML, Anda dapat menggunakan
-
Preserve Tags - Memelihara Struktur:
- Ketika struktur HTML penting: Jika ingin mempertahankan struktur HTML, termasuk tag dan hirarkinya, penting untuk mempertahankan tag.
- Untuk analisis data terstruktur: Memelihara tag sangat penting ketika hubungan antara elemen HTML yang berbeda penting untuk analisis Anda. Contoh:
tag_paragraf = soup.find_all('p')
Perbedaan find() dan find_all() dalam BeautifulSoup
Kedua fungsi tersebut sangat mirip, seperti yang terlihat dalam dokumentasi BeautifulSoup:
find_all(tag, attributes, recursive, text, limit, keywords)
find(tag, attributes, recursive, text, keywords)
Namun memiliki perbedaan utama, yaitu:
-
find(): Mengembalikan elemen pertama yang sesuai dengan kriteria pencarian. Jika tidak ada yang sesuai, akan mengembalikanNone.Contoh:
first_paragraph = soup.find('p') -
find_all(): Mengembalikan sebuah list dari semua elemen yang sesuai dengan kriteria pencarian. Jika tidak ada yang sesuai, akan mengembalikan list kosong.Contoh:
all_paragraphs = soup.find_all('p')
Jadi, jika Anda hanya tertarik pada satu elemen yang pertama kali ditemukan, gunakan find(). Namun, jika Anda ingin mendapatkan semua elemen yang sesuai, gunakan find_all().
Contoh penggunaan find():
first_header = soup.find('h1')
Contoh penggunaan find_all():
all_headers = soup.find_all(['h1', 'h2', 'h3'])
Penting untuk mencocokkan pemilihan fungsi dengan kebutuhan scraping dan struktur halaman web yang ingin Anda ekstrak.