Bot Entry Form Otomatis dengan Python: Memanfaatkan Selenium dan Excel untuk Pengisian Data Cepat

Pinterest LinkedIn Tumblr +

Di artikel ini, kita akan bahas langkah-langkah membuat bot sederhana di Python menggunakan Selenium untuk memasukkan data ke dalam form secara otomatis. Script ini sangat cocok jika Anda sering melakukan pengisian data form secara manual dari file Excel, karena bisa menghemat waktu dengan mengotomatisasi proses tersebut.

Persiapan Script Otomatisasi Pengisian Data Form

1. Setup Lingkungan Python dan Install Library yang Diperlukan

Pertama, pastikan Anda memiliki modul selenium dan pandas. Kalau belum, install dengan perintah berikut di terminal:

pip install selenium pandas

2. Siapkan File Excel dan Form HTML

  • File Excel: Buat file Excel dengan data yang ingin diisi ke dalam form. Contoh struktur data:
  • NamaEmailPesan
    John Doe[email protected]Halo, ini John!
    Jane Smith[email protected]Hai, ini Jane!
  • Form HTML: Siapkan form HTML dengan elemen input sesuai dengan kode berikut:
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Formulir Otomatis</title>
        <script>
            function showData() {
                const nama = document.getElementById("nama").value;
                const email = document.getElementById("email").value;
                const pesan = document.getElementById("pesan").value;
                alert("Data yang diisi:\nNama: " + nama + "\nEmail: " + email + "\nPesan: " + pesan);
                return false; // Mencegah form benar-benar ter-submit
            }
        </script>
    </head>
    <body>
        <h2>Isi Formulir Otomatis</h2>
        <form id="form" action="#" method="post" onsubmit="return showData();">
            <label for="nama">Nama:</label><br>
            <input type="text" id="nama" name="nama"><br><br>
            
            <label for="email">Email:</label><br>
            <input type="email" id="email" name="email"><br><br>
            
            <label for="pesan">Pesan:</label><br>
            <textarea id="pesan" name="pesan" rows="4" cols="50"></textarea><br><br>
            
            <button type="submit" id="submit">Kirim</button>
        </form>
    </body>
    </html>
    
    
    • name=”nama” untuk kolom nama
    • name=”email” untuk kolom email
    • name=”pesan” untuk kolom pesan
    • id=”submit” untuk tombol submit

Simpan file HTML ini di komputer Anda.

Penjelasan Script Python untuk Mengisi Form Secara Otomatis

Berikut adalah penjelasan script Python yang akan membaca data dari file Excel dan mengisinya di form secara otomatis.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.common.exceptions import NoSuchElementException, StaleElementReferenceException, UnexpectedAlertPresentException
import pandas as pd
import time
import logging
  • Library yang Digunakan:
    • selenium untuk mengontrol browser secara otomatis.
    • pandas untuk membaca file Excel.
    • time untuk memberi jeda antar operasi.
    • logging untuk mencatat hasil dan kesalahan yang terjadi.
BACA JUGA  Membuat Aplikasi Streaming Video ke YouTube dengan Python dan Flask

3. Membaca Data Excel dan Menyiapkan Logging

logging.basicConfig(filename="form_filling_log.txt", level=logging.INFO,
                    format="%(asctime)s - %(levelname)s - %(message)s")
                    
excel_path = "/Users/sugonogalih/Desktop/belajar-python/data-entry-bot/data.xlsx"
data = pd.read_excel(excel_path)

  • Logging: Script ini menggunakan logging untuk mencatat setiap pengisian form dan kesalahan yang terjadi.
  • Membaca File Excel: Sesuaikan excel_path dengan lokasi file Excel Anda.

4. Mendefinisikan Path Form HTML dan Menentukan Batas Data per Batch

form_path = "file:///Users/sugonogalih/Desktop/belajar-python/data-entry-bot/form.html"
batch_size = 100
results = pd.DataFrame(columns=["Index", "Nama", "Email", "Pesan", "Status"])
  • Path Form: Pastikan form_path merujuk pada lokasi file HTML form di komputer Anda.
  • Batch Size: Tentukan jumlah data yang di-submit dalam satu sesi (misal 100 data).

5. Fungsi Mengisi Form dari Data Excel

Fungsi fill_form ini bertugas untuk mengisi form berdasarkan data dari satu baris di Excel.

def fill_form(row, index):
    try:
        driver.get(form_path)
        time.sleep(2)
        
        try:
            nama_input = driver.find_element(By.NAME, "nama")
            email_input = driver.find_element(By.NAME, "email")
            pesan_input = driver.find_element(By.NAME, "pesan")
            submit_button = driver.find_element(By.ID, "submit")
        except NoSuchElementException:
            logging.error(f"Elemen form tidak ditemukan pada baris {index + 1}")
            results.loc[len(results)] = [index + 1, row["Nama"], row["Email"], row["Pesan"], "Error - Elemen tidak ditemukan"]
            return

Di sini kita buka file HTML lokal, lalu cari elemen form. Jika ada elemen yang tidak ditemukan, akan dicatat sebagai error di form_filling_log.txt.

6. Mengisi Data Form dan Memeriksa Kebenaran Data

nama_input.clear()
nama_input.send_keys(row["Nama"])
email_input.clear()
email_input.send_keys(row["Email"])
pesan_input.clear()
pesan_input.send_keys(row["Pesan"])

nama_filled = nama_input.get_attribute("value")
email_filled = email_input.get_attribute("value")
pesan_filled = pesan_input.get_attribute("value")

if nama_filled == row["Nama"] and email_filled == row["Email"] and pesan_filled == row["Pesan"]:
    logging.info(f"Data pada baris {index + 1} terisi dengan benar: {row['Nama']}, {row['Email']}")
    status = "Sukses"
else:
    logging.warning(f"Kesalahan pada pengisian data baris {index + 1}. Data terisi: {nama_filled}, {email_filled}, {pesan_filled}")
    status = "Kesalahan Pengisian Data"

Kita melakukan pengecekan apakah data yang diisi sesuai dengan data di Excel. Jika sesuai, maka ditandai sebagai “Sukses”. Jika tidak, maka dicatat sebagai “Kesalahan Pengisian Data”.

7. Submit Data dan Tutup Alert (Jika Muncul)

submit_button.click()
time.sleep(1)

try:
    alert = driver.switch_to.alert
    alert_text = alert.text
    alert.accept()
    logging.info(f"Alert muncul: {alert_text}")
    status = "Sukses - Alert Ditutup"
except UnexpectedAlertPresentException:
    logging.warning(f"Alert tidak muncul pada baris {index + 1}")

Di sini script meng-klik tombol submit, dan jika ada alert yang muncul, alert akan ditutup.

BACA JUGA  Memanfaatkan Python dan Google Analytics untuk Analisis SEO

8. Proses Loop untuk Menjalankan Fungsi Pengisian Form

for start in range(0, len(data), batch_size):
    driver = webdriver.Chrome()
    batch_data = data.iloc[start:start + batch_size]
    
    for index, row in batch_data.iterrows():
        fill_form(row, index)

    driver.quit()
    time.sleep(2)

Script akan membaca dan memproses data dalam batch sesuai jumlah yang ditentukan di batch_size. Browser otomatis ditutup setelah selesai.

9. Menyimpan Hasil ke File CSV

results.to_csv("entry_results.csv", index=False)
logging.info("Proses pengisian form selesai.")

Setelah selesai, hasil akan disimpan dalam file CSV entry_results.csv.

Dengan mengikuti langkah di atas, Anda akan punya script otomatis yang bisa membaca data dari Excel dan mengisinya ke dalam form web. Semoga berhasil!

Share.

About Author

I am a Full-Stack Developer who loves to translate designs files into Website and Application, Based in Bandar Lampung - Indonesia

Comments are closed.