Mengambil Data Komentar

Melalui kelas ini, kamu diajak untuk:

  • Mengidentifikasi langkah-langkah untuk mengambil data komentar melalui webdriver.
  • Memahami konsekuensi dari setiap kode eksekusi mengambil data komentar Instagram.

Tentang Kolom Komentar Instagram

Ketika kita membuka sebuah unggahan di Instagram, kolom komentar hanya akan menampilkan beberapa komentar. Jika kita ingin mengambil semua komentar yang ada dalam sebuah unggahan, kita perlu menulis kode eksekusi untuk membuat webdriver membuka setiap tombol (+).

Fenomena ini disebut hidden HTML atau elemen HTML tersembunyi. Elemen akan ditampilkan ketika kita melakukan trigger tertentu. Dalam hal ini, trigger diberikan dengan mengklik tombol (+).

Jadi, ada empat langkah yang harus ditempuh untuk mengambil data komentar Instagram:

  • Membuka unggahan
  • Menekan tombol (+)
  • Mengambil data
  • Menyimpan data

Membuka Unggahan

Sama seperti membuka halaman depan Instagram, kita perlu mengisi parameter url dalam driver.get(url) dengan tautan unggahan yang ingin kita buka.

Tulis kode ini dalam file Python.


driver.get('https://www.instagram.com/p/CP493sOBtBs/')

Membuka Semua Elemen HTML Tersembunyi

Setelah unggahan ditampilkan, tugas kita adalah menekan tombol (+) yang akan memicu tampilan elemen HTML berisi komentar-komentar.

Tulis kode-kode di bawah ini dalam file Python.


# Membuka seluruh data di kolom komentar

i = 0
while i < 70: # Menarget seberapa banyak tombol "load more comments" akan di-klik.
    load_more_comment= WebDriverWait(driver,20).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="react-root"]/section/main/div/div[1]/article/div[3]/div[1]/ul/li/div/button')))
    try:
        load_more_comment.click()
        time.sleep(3)
    except exceptions.StaleElementReferenceException as e:
        print(str(e))
        pass
    finally:
        i += 1

Sebagai catatan, kode while 1 < 1000 berisi parameter yang perlu kita sesuaikan dengan jumlah komentar dalam sebuah unggahan. Di unggahan yang kita buka, terdapat hampir 700 komentar. Jika pada mulanya kolom hanya menampilkan 10 komentar, maka kita perlu mengklik tombol (+) setidaknya 70 kali (700/10=10).

Waktunya Menunggu

Usai kode di atas dieksekusi, webdriver akan membuka satu per satu tombol (+) sampai seluruh komentar ditampilkan di browser. Bagian ini memakan beberapa waktu sesuai dengan jumlah komentar yang ada.

Karena kita memasukkan parameter 70 kali dan total komentar tidak mencapai 700, webdriver akan memberikan notifikasi Exception ketika tidak ada tombol (+) yang bisa diklik lagi.

Scraping Dimulai!

Setelah seluruh data komentar ditampilkan, kita bisa mengeksekusi pengambilan data. Langkah pertama yang ditempuh adalah mendefinisikan indeks data yang akan diambil. Kali ini, kita akan mengklasifikasikan data berdasarkan dua indeks; username dan komentarnya.

Setelah menentukan indeks data, saatnya menarget elemen-elemen HTML yang berisi username serta komentar yang ada.

Tulis kode di bawah ini dalam file Python.


# Membuka seluruh data di kolom komentar

time.sleep(10)

# Menentukan indeks data
user_names = []
user_comments = []

# Meminta webdriver untuk menemukan elemen kolom komentar
comment = driver.find_elements_by_class_name('gElp9 ')

# Mengambil data username dan komentarnya
for c in comment:
    container = c.find_element_by_class_name('C4VMK')
    name = container.find_element_by_class_name('_6lAjh ').text
    content = container.find_elements_by_tag_name('span')[1].text
    content = content.replace('\n', ' ').strip().rstrip()
    user_names.append(name)
    user_comments.append(content)

Memasukkan Data ke File CSV

Setelah data diambil, langkah terakhir yang perlu dilakukan adalah menyimpan data. Kali ini kita akan menggunakan dua fungsi dalam modul Pandas, DataFrame dan to_csv. DataFrame digunakan untuk menampilkan data berdasarkan klasifikasi indeks yang ditentukan. Sementara to_csv digunakan untuk memasukkan DataFrame ke file .csv.

Tulis kode di bawah ini dalam file Python.


# Memasukkan data ke file CSV
    
comments_df = pd.DataFrame({"username": user_names, "comment": user_comments})
comments_df.to_csv("komentar_jokowi.csv", index=False)

Setelah kode dieksekusi, file bernama komentar_jokowi.csv akan otomatis muncul di komputer.

Selayang Pandang

  • Selenium hanya bertugas mengumpulkan data, sementara databasenya perlu library lain.
  • Pandas berfungsi sebagai pengumpul data.
  • File hasil scrapping dapat disetor dalam bentuk CSV.

Kuis

Library apa yang digunakan untuk menyetor data?

Selamat, Anda telah menyelesaikan pelajaran ini
Klik untuk menyelesaikan