tutorial kali ini kita akan mengunakan Beauitulshop module python untuk scraping data, Beauitulshop juga tidak hanya untuk scrapping, bisa juga untuk memanipulasi data yang tidak teratur menjadi rapih. sehingga kita tidak perlu copy paste data karena akan memakan waktu. dengan Beauitulshop kita bisa melakukan hal itu dengan menjalankan code yg kita buat dengan sesuai yang kita ingin kan. sebagai contoh penulis akan mencoba scraping produk yang sedang flashsale di tokopedia.com dengan data yang di hasilkan Nama produk, Harga produk, Link Produk. jika di lakukan secara manual maka memakan banyak waktu untuk copy paste. namun degan Beauitulshop dan Request melakukan scraping data web adalah hal mudah.
apa itu Web scraping ?
web scraping adalah cara untuk mengambil data dari sumber sebuah halaman website, bukan hanya website namun file yang ber bahasa markup seperti HTML atau XHTML dapat di scraping. dan proses tersebut akan menganalisis dokumen sebelum memulai dan mengambil data.
sebelum kita mulai scraping, disiapkan dahulu bahasa yang kita gunakan. install python, jika belum terinstall bisa baca di link ini, untuk cara install python. setelah python sudah terinstall, selajut nya menginstall module yang di gunakan ya itu Beauitulshop dan Request.
pip install beautifulsoup4
pip install requests
beautifulsoup4 adalah module untuk digunakan prosess scraping dan request adalah module HTTP untuk melakukan prosess mengambil data
buat sebuah file dengan nama scrap.py
dan import module yag sudah di install tadi.
1#!/usr/bin/python
2# -*- coding: utf-8 -*-
3import requests
4from bs4 import BeautifulSoup
setelah kita import, kita buat variable site yang akan mau di scraping, karna disini tokopedia.com sebagai contoh
5bl = "https://www.tokopedia.com/discovery/flash-sale"
dan selanjut nya kita akan mengabil data tokopedia dengan mengunakan module request.
6res = requests.get(bl)
7html = BeautifulSoup(res.content, "html.parser")
8print(html)
coba di jalankan, jika berhasil. maka output html dari tokopedia akan tampil. sampai disinih kita sudah berhasil scraping data dari tokopedia.com tahap selanjut memanipulasi atau mefilter data yang kita inginkan. contoh kita akan mengambil Nama produk, Harga produk, Link Produk. yang sedang flashsale sebelum kita filter, kita harus tau nama element yang kita akan ambil dengan cara membuka web tokopedia.com dengan cara inspect element. hal yang pertama kita cari adalah nama class row atau container element tersebut.
dari gambar diatas kita mendapatkan class name container _1E0nAqju
itu adalah sebuah class row,
selanjut nya kita akan mencari nama parent class dari class row yg sudah di dapat. dan untuk parent class nya adalah I8luE9wS
. setelah dapat parent class maka kita akan looping class tersebut, karena nama class tersebut tidak hanya satu nama class, maka dari itu kita butuh untuk mengulangi nya.
- outline warna kuning
_1E0nAqju
nama class container - outline warna hijau
I8luE9wS
parent class atau child class dari class container - outline warna putih
_2A1s174V
nama class judul Produk - outline warna merah
_2B_PeQak
nama class harga produk
untuk link produk, tidak perlu mengunakan nama class. untuk lebih jelas nya jalankan kode di bawah ini.
1#!/usr/bin/python
2# -*- coding: utf-8 -*-
3import requests
4from bs4 import BeautifulSoup
5header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36'}
6bl = "https://www.tokopedia.com/discovery/flash-sale"
7res = requests.get(bl, headers=header)
8html = BeautifulSoup(res.content, "html.parser")
9rows = html.find("div", class_ = "_1E0nAqju")
10divs = rows.findAll("div", { "class" :"I8luE9wS"})
11data = []
12for div in divs:
13 title = div.find("div", class_ = "_2A1s174V").text
14 harga = div.find("div", class_ = "_2B_PeQak").text
15 link = div.a.get("href")
16 obj = {
17 "nama" : title,
18 "harga" : harga,
19 "link" : link
20 }
21 data.append(obj)
22print(data)
Jika null atau error, silahkan di update lagi nama class tersebut. di lain waktu saya akan buat tutorial scraping dengan Selenium.