Cara scraping dengan Beautifulsoup

Avatar
di tulis oleh g3xx | waktu Baca: 3 Menit

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.

cara scraping dengan beautifulsoup

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.

Avatar hanya seseorang yang suka belajar ngoding sambil bermain

tulisan terkait

Cara scraping dengan Beautifulsoup
>
comments powered by Disqus