Mengenal Web Scrapping dengan Selenium
Web Scraping tutorial bagi pemula

Apa itu web scrapping
Web Crawler atau biasa disebut Web Scrapping adalah teknik pengumpulan data dari suatu website dengan cara yang cepat. Biasanya hal ini dilakukan dengan software atau bot tertentu, itulah alasan mengapa ada yang namanya CAPTCHA untuk memastikan bahwa yang mengunjungi situs tersebut bukanlah bot melainkan orang beneran. Tujuan dari Web Scrapping ini adalah untuk mengkopi data dari suatu web ke dalam database lokal seperti nama perusahaan, email, kontak dan lain sebagainya
Teknik yang dilakukan
- Human copy-paste
- Text pattern matching
- Computer vision web-page analysis
Sebaik apapun mesin yang dibuat tidak akan bisa mengalahkan kerja manual manusia. terkadang ini adalah salah satu cara ketika web tersebut menggunakan anti bot automation
Ini adalah cara yang akan kita perlajari nantinya yaitu membuat web scrapping dengan mencocokkan pattern dari web tersebut, biasa cara ini menggunakan fasilitas bahasa pemrograman Python atau Perl
cara yang satu ini lebih canggih lagi gan yaitu dengan menggunakan "Computer Vision" atau "Machine Learning" untuk meng-ekstrak informasi dari website dengan menafsirkan halaman seperti yang manusia lakukan
Apa itu Selenium
Selenium adalah salah satu Web Browser automation. Biasa digunakan untuk mengetes suatu website agar tidak mudah dijebol orang lain. OLeh karena itu selenium dapat digunakan untuk mengotak atik web layaknya manusia seperti mencari informasi di web, mengklik tombol, bahkan mengisi form layaknya manusia.
Jangan menyalah gunakan selenium dengan scrap web terlalu banyak karena itu adalah pelanggaran aturan, resikonya IP anda akan di ban karena dikira pembobol (Hacker)
Apa yang akan dilakukan
Kita akan mencoba untuk scrap github profile dan mendapatkan Repository Names dan Languages dari Pinned Repositories.
Apa yang dibutuhkan
- Python 3.x (python 2.x bisa namun kode akan sedikit berbeda)
- pip
- Selenium Package
- ChromeDriver
- Virtualenv
Lets Code
Project Setup
Buatlah folder baru dengan nama webscrapping, dan buatlah file bernama setup.py di dalamnya. Kemudian tulislah selenium di file tersebut.

Buka command line (command prompt / terminal) dan buatlah virtual environment:
$ virtualenv webscraping
Masuk ke dalam folder websrapping dengan kode berikut:
cd webscrapping
Kemudian install dependency dalam virtualenv dengan kode berikut:
pip install -r setup.py
(Bagi pengguna mac) jika gagal coba gunakan:
pip3 install -r setup.py
Dalam folder webscrapping, buatlah file bernama webscrapping.py dan masukkan code berikut:
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.common.exceptions import TimeoutException
Buatlah variable browser untuk menampung webdriver
browser = webdriver.Chrome(executable_path='/Users/gw/Documents/chromedriver')
executable_pathadalah tempat dimana kalian menyimpan ChromeDriver
Disini kita memakai github profile sebagai url
browser.get(“https://github.com/farrasdoko")
Kemudian kita beri kode untuk mendeteksi time out dengan mendeteksi user profile menggunakan Try/Except:
# Wait 20 seconds for page to load timeout = 10 try: WebDriverWait(browser, timeout).until(EC.visibility_of_element_located((By.XPATH, “//img[@class=’avatar width-full rounded-2']”))) except TimeoutException: print(“Timed out waiting for page to load”) browser.quit()

Kita akan mengambil title dan languages dari pinned repository. Tidak hanya title namun juga selenium object dengan element yang mengandung title.
# find_elements_by_xpath returns an array of selenium objects. titles_element = browser.find_elements_by_xpath(“//a[@class=’text-bold’]”) # use list comprehension to get the actual repo titles and not the selenium objects. titles = [x.text for x in titles_element] # print out all the titles. print('titles:') print(titles, '\n')
Seluruh title punya struktur kelas yang sama, sehingga kita hanya perlu satu XPATH
language_element = browser.find_elements_by_xpath(“//p[@class=’mb-0 f6 text-gray’]”) # same concept as for list-comprehension above. languages = [x.text for x in language_element] print(“languages:”) print(languages, ‘\n’)
Begitu juga dengan language, seluruh language dari pinned repositories memiliki XPATH yang sama
Final step
Langkah terakhir yaitu mencocokkan language dengan title yang telah kita dapatkan
for title, language in zip(titles, languages): print(“RepoName : Language”) print(title + ": " + language, '\n')
Jalankan!!
Berikut adalah command untuk mengeksekusi code
python webscraping.py
Mungkin anda punya 2 versi python di laptop anda, coba jalankan command berikut
python3 webscraping.py
Keitka program dijalankan akan ada alert “Chrome is being controlled by automated test software”

Lihat Kembali terminal dimana anda menjalankan command

Selamat anda telah melakukan scrapping
Hargailah para blogger dengan mematikan ADBLOCKER anda
Comments
Post a Comment