Cara scraping dengan Selenium

Avatar
di tulis oleh g3xx | waktu Baca: 3 Menit

sebelum nya saya membuat tutorial scraping dengan BeautifulSoup, untuk kesempataan kali ini saya akan membuat tutorial scraping dengan selenium.

apa itu Selenium

selenium adalah sebuah multi driver library untuk melakakukan otomatis test pada browser, sebuah aktivitas di browser di lakukan secara otomatis dengan selenium, seperti clik,input,upload, sumbit, drag/drop dan masih banyak lagi.

sebelum kita mulai, kita install module dan software yang di butuhkan.

web driver bisa di download salah satu, karena yang di gunakan hanya 1 web driver, namun jika kalian mendownload semua tidak masalah. karena bisa dirubah untuk konfigurasi web driver nanti nya. Jika kalian sudah download. silahkan buat sebuah folder di C:\Web Driver dan pindahkan semua file yang di download tadi. hanya file .exe nya saja yang kalian pindah kan, dan jangan lupa di tambahkan Path Variable Environment nya.

apabila semua sudah terinstall, sekarang kita coba untuk penulisan kode nya. silahkan buat sebuah nama file selenium.py tulisankan kode seperti ini dan coba jalankan dengan ketik python selenium.py di window CMD.

1
2
3
4
5
6
7
8
from selenium import webdriver
from selenium.webdriver.common.keys import Keys

browser = webdriver.Firefox()
browser.get('http://www.google.com')
assert 'Google' in browser.title
elem = browser.find_element_by_name('q')
elem.send_keys('sumbercode.com' + Keys.RETURN)

jika kode di atas dijalankan dan tidak terjadi error maka akan muncul window Firefox baru membuka web google dan mengisi input search dengan tulisan sumbercode.com. pada kesempatan ini saya menulis tutorial cara scraping bukan untuk auto testing, karena pada dasar nya Web driver di gunakan untuk automate testing. karena scraping tidak membutuhkan window browser, jadi nanti kita menggunakan mode headless. untuk menyembunyikan window browser tersebut.

untuk contoh kali ini saya akan scraping flashsale di bukalapak.com dengan mengunakan selenium untuk mengambil source html nya dan BeautifulSoup untuk memanipulasi nya.

module reuqests tidak bisa menunggu code javascript yang running sampai selesai, namun jika kita menggunakan selenium kita bisa menunggu untuk page tersebuat dapat sepenuh nya terload.

sekarang kita coba jalan kode di bawah ini, dengan ketik python selenium.py

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.firefox.options import Options
from bs4 import BeautifulSoup

options = Options()
options.add_argument("--headless")
browser = webdriver.Firefox(firefox_options=options)
browser.get('https://www.bukalapak.com/flash-deal')
try:
    element = WebDriverWait(browser, 5).until(
        EC.presence_of_element_located((By.CLASS_NAME, "jupiter"))
    )
finally:
    print("Page full loaded")

html = browser.page_source
browser.quit()
soup = BeautifulSoup(html, "html.parser")
divs = soup.findAll("div", class_ = "c-card")
data = []
for i, div in enumerate(divs):
	title = div.find("div", class_ = "u-txt--ellipsis").text
	harga = div.find("span", class_ = "c-product-price__reduced").text
	stock = div.find("div", class_ = "u-txt--tiny u-fg--black").text
	obj = {
		"Title" : title,
		"Harga" : harga,
		"Stock" : stock 
	}
	data.append(obj)
	if i == 20:
		break;
print(data)

Penjelasan

di line 8 kita mengunakan mode headless, config dari selenium nya. di line 12 kita membuat statement menuggu element class name ‘jupiter’ hingga tampil, yaitu class container dari page flashdeal bukalapak. di line 19 kita simpan page source menjadi variable dan line 20 kita close browser nya. selanjut nya kita filter dengan beatiufulsoup. dan hasil filter di jadikan list object. buat yang bingung dengan beatiufulsoup, bisa lihat postingan scraping dengan beatiufulsoup untuk mencari nama class.

Avatar hanya seseorang yang suka belajar ngoding sambil bermain

tulisan terkait

Cara scraping dengan Selenium
Cara scraping dengan Selenium
>
comments powered by Disqus