Mengenal Web Scrapping - Anak Developer

Mengenal Web Scrapping dengan Selenium

Web Scraping tutorial bagi pemula

Web Scrapping Work

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
  • 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

  • Text pattern matching
  • 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

  • Computer vision web-page analysis
  • 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.

Catatan penting!!!

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

Lets Code

Project Setup

Buatlah folder baru dengan nama webscrapping, dan buatlah file bernama setup.py di dalamnya. Kemudian tulislah selenium di file tersebut.

Project folder structure

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')
Catatan penting!!!

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()
find element by XPATH

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