Cara Membuat Aplikasi Perbandingan Harga E-Commerce menggunakan Selenium dan TkInter – Menuju AI — Teknologi, Sains, dan Teknik Terbaik

Pengarang: Wisnu Nair

Pengikisan Web

Foto oleh John Schnobrich di Unsplash

Motivasi

Dari tahun-tahun saya menjadi konsumen e-commerce yang rajin, saya telah memperhatikan ketidaknyamanan tertentu saat membeli produk yang menarik. Salah satu kerepotan yang memakan waktu ini adalah menemukan nilai terbaik untuk produk tersebut. Dengan hanya satu permintaan di situs web e-niaga ini, kita sering menemukan diri kita menggulir banyak item untuk menemukan satu dengan peringkat paling banyak dan ulasan paling positif semuanya dengan harga minimal. Ada begitu banyak pilihan untuk membeli sesuatu secara online yang sering membuat kita bingung dengan jumlah tab yang terbuka dan tombol “Bandingkan harga” (yang kadang-kadang bahkan tidak ada).

Pertimbangkan membeli headset misalnya. Anda menghabiskan banyak waktu untuk meneliti merek, spesifikasi, pro, dan kontra dari item ini sampai Anda memilih satu yang memenuhi kebutuhan Anda. Setelah akhirnya memilih satu, Anda dihadapkan pada tugas yang sama sulitnya: mencari tahu dari toko mana Anda akan membeli barang tersebut. Beberapa toko menawarkannya dengan diskon $ 50 sementara yang lain tidak. Penjual lain memberikan diskon yang lebih besar meskipun peringkat penjual mereka setinggi yang Anda inginkan. Variansnya terus meningkat dan Anda semakin bingung saat melakukan pembelian sederhana. Bagaimana jika kita dapat mengotomatiskan proses ini untuk menemukan pembelian yang optimal?

Karena ketergantungan kita pada e-niaga terus tumbuh setiap hari, akan menjadi aset yang bagus untuk memiliki alat yang mengotomatiskan proses perbandingan harga yang melelahkan berdasarkan peringkat, jumlah peringkat, dan harga. Pada artikel ini, saya akan menunjukkan kepada Anda bagaimana membangun scraper web dengan Python yang mampu melakukan hal itu!

Daftar Tugas Kami

Sebelum kita mulai, mari kita garis besar apa yang akan kita lakukan dengan tepat. Saya membatasi ruang lingkup proyek ini ke Amazon dan eBay, bisa dibilang dua perusahaan e-commerce paling populer saat ini. Pada akhir artikel ini akan:

Gunakan perpustakaan BeautifulSoup dan Selenium dengan Python untuk mengikis data dari Amazon dan eBay Urutkan kumpulan data berdasarkan jumlah peringkat dan harga, dapatkan 10 pembelian potensial teratas yang optimal Buat GUI menggunakan perpustakaan TkInter yang mudah digunakan untuk menempatkan semuanya bersama

Dengan menggunakan Python, kami dapat menampi banyak kelebihan penawaran yang jika tidak Anda akan menghabiskan waktu untuk melihatnya. Ini tidak hanya menghemat waktu Anda, tetapi juga uang!

“Waspadalah terhadap pengeluaran kecil; kebocoran kecil akan menenggelamkan kapal besar” — Benjamin Franklin

Scraper

Untuk analisis ini, pertama-tama kita membangun dua parser, masing-masing satu untuk setiap situs web. Pertama, kami ingin pengguna memasukkan istilah pencarian serta rentang halaman untuk dikikis. Misalnya, jika kita mencari “garam laut” dan memasukkan rentang halaman 5, kita ingin skrip kita mengunjungi halaman web Amazon/eBay dan mengikis informasi garam laut secara iteratif hingga mencapai akhir halaman 5.

Sekarang kita memiliki tujuan dalam pikiran, mari kita masuk ke kode. Kita harus terlebih dahulu mengonversi sintaks istilah pencarian agar sesuai dengan cara pembuatan URL. Kita bisa mendapatkan URL dasar umum menggunakan domain situs web diikuti dengan istilah pencarian yang diformat, yang kemudian diikuti dengan nomor halaman yang ingin kita kikis. Dengan menggunakan URL khusus ini, kita dapat menggunakan Selenium API untuk mengarahkan scraper kita ke sana dan mendapatkan informasi apa pun yang kita inginkan.

URL dasar diikuti dengan istilah pencarian dan kurung kurawal untuk memformat berdasarkan nomor halaman. Gambar oleh penulis

Setiap item halaman web dibuat dari atribut HTML. Setelah menemukan tag spesifik yang sesuai dengan item di halaman itu, kami dapat mengambil semua item yang termasuk dalam tag tersebut. Dengan menggunakan BeautifulSoup API, kita dapat langsung mengakses sumber HTML halaman web dan melakukannya. Mengetahui tag mana yang harus ditemukan adalah proses coba-coba. Mulailah dengan mencetak kode HTML apa pun yang dikembalikan oleh kueri berbasis tag Anda dan ubah hingga Anda mendapatkan item yang Anda cari.

Buka halaman web mana pun, klik kanan pada apa saja dan pilih “Periksa” untuk melihat kode HTML yang mendasarinya. Gambar oleh penulis

Dalam implementasi saya, saya menggunakan Chrome sebagai browser default. Apa pun browser yang Anda pilih, pastikan untuk mengubah jenis driver web yang Anda gunakan di Selenium. Sekarang parser Anda tahu tautan apa yang harus dikunjungi, kami menghadapi masalah berikutnya: mengulangi halaman yang berbeda. Cara mendekati ini cukup sederhana. Pada gambar di atas kami telah menempatkan kurung kurawal di bagian paling akhir untuk memformat berdasarkan nomor halaman. Sekarang, yang harus kita lakukan adalah menyiapkan for-loop yang berisi kode parser, memformat dengan nomor halaman pada setiap iterasi, dan menggores semua informasi produk pada halaman tersebut. Kami menggunakan fungsi ‘find’ di BeautifulSoup API untuk mengikis tag HTML yang berisi informasi ini.

Dengan ini, parser saya dapat mengekstrak nama, harga, kondisi, URL, biaya pengiriman, peringkat rata-rata, dan sejumlah peringkat untuk setiap produk di halaman. Ada beberapa contoh ketika kami mendapatkan kueri kosong untuk bit informasi ini. Oleh karena itu, perlu menggunakan pernyataan try untuk menghindari kesalahan. Saya membuat daftar untuk menyimpan informasi yang diuraikan, memastikan bahwa placeholder hadir jika ada informasi yang hilang juga. Hal ini dilakukan agar setiap daftar menjaga konsistensi informasi. Kita bisa menjatuhkan pengamatan berdasarkan indeks dengan mudah nanti.

Mudah-mudahan, penjelasan di atas masuk akal dengan sendirinya, tetapi jika tidak, di sini adalah kode untuk parser eBay di sini! Membaca komentar yang saya tulis bersama dengan kode akan lebih menggambarkan poin yang saya buat sebelumnya.

https://medium.com/media/c61138efed039327f18a3750b525b9fa/href

Logika yang sama ini berlaku saat membuat parser Amazon. Jika Anda ingin memeriksa kodenya, Anda dapat melakukannya di repo GitHub saya di sini. Sekarang setelah kita memiliki dua parser, kita memerlukan fungsi eksternal yang mengambil kumpulan data yang dihasilkan dan memprosesnya terlebih dahulu. Saya telah melakukan ini dalam fungsi yang disebut ‘utama’ di repositori GitHub. Di dalam fungsi, saya mengonversi variabel string menjadi numerik untuk mengurutkan berdasarkan jumlah peringkat untuk setiap produk. Ini adalah metrik yang saya pilih saat memfilter 10 item teratas dalam kueri. Metrik ini dapat dengan mudah diubah berdasarkan preferensi Anda.

Membuat GUI

Sekarang setelah parser sudah dibuat, mari kita coba membuatnya menjadi alat yang dapat digunakan orang lain! Saya membuat GUI menggunakan perpustakaan TkInter dengan Python. API ini memberi kami cara yang nyaman dan efisien untuk membuat antarmuka pengguna yang ramah untuk scraper.

Ada beberapa modul yang dapat Anda gunakan dalam perpustakaan ini untuk mendapatkan widget di dalam antarmuka. Untuk proyek ini, kami menggunakan empat:

tk.Canvas: Gunakan ini untuk mengatur dimensi jendela aplikasi tk.Frame: Membuat area persegi panjang tempat Anda dapat menempatkan widget pilihan Anda tk.Entry: Membuat kotak teks tempat pengguna dapat memasukkan data teks tk.Button: Membuat tombol yang saat diklik, dapat memicu suatu fungsi (dalam kasus kami ini akan menjadi fungsi scraper)

Penting juga untuk mencatat tiga cara menyesuaikan tata letak widget Anda. Pustaka TkInter memiliki tiga yang dapat Anda manfaatkan: tempat, pak, dan kisi. Untuk proyek kami, kami menggunakan metode “tempat” secara eksklusif. Menurut pendapat saya, ini adalah cara paling mudah untuk mengatur widget Anda karena metode ini memungkinkan nilai x dan-y absolut sebagai input. Jika Anda penasaran dengan dua metode lainnya, Anda bisa membacanya di sini.

Di aplikasi saya, saya membuat enam bingkai. Satu menampung bilah pencarian tempat pengguna dapat memasukkan produk yang mereka minati. Dua di antaranya berfungsi sebagai latar belakang kanvas. Satu frame menampung dua sub-frame lain yang menampilkan dua kumpulan data yang diperoleh dari skrip scraping. Kemudian, saya membuat dua bilah alat entri: satu untuk nama produk dan yang lainnya untuk nomor halaman maksimum untuk mengikis data produk. Terakhir, saya menambahkan tombol “Bandingkan”. Saat diklik, itu memicu fungsi “utama” yang dibahas sebelumnya yang memberi kita dua bingkai data yang diurutkan.

Mari kita lihat aplikasi beraksi. Saya telah mencari headset Bose nc700 sebagai contoh. Saya meminta aplikasi untuk mengikis dua halaman pertama eBay dan Amazon dan mengurutkan sesuai dengan fungsi saya, mengembalikan 10 kueri teratas untuk kedua situs web. Berikut adalah produk akhir kami:

Antarmuka aplikasi dan contoh keluaran. Gambar oleh penulis.

Berdasarkan kerangka data yang diurutkan, kami melihat bahwa 10 pilihan teratas untuk produk di eBay dan Amazon tidak memiliki banyak perbedaan harga. Oleh karena itu, membeli dari salah satu situs web sudah cukup, kecuali jika Anda ingin menghemat $50 atau lebih untuk membeli produk yang diperbarui.

Sekarang setelah Anda memiliki gagasan tentang cara kerjanya, Anda dapat membangun parser Anda sendiri dan memasukkan lebih banyak situs web yang ingin Anda bandingkan. Namun, tag HTML yang Anda kueri dan URL situs web perlu ditanyakan sedikit berbeda. Saat melakukan ini, periksa atribut situs web dengan cermat dan bereksperimen dengan kueri HTML yang berbeda hingga mendapatkan informasi yang Anda inginkan.

Seperti yang dapat dilihat, alat ini mungkin cukup membantu dalam membandingkan penawaran produk di berbagai situs web dan akan menghemat sedikit waktu. Alih-alih melihat melalui berbagai tab dan menggulir produk tanpa akhir, kami memiliki opsi pembelian terbaik di ujung jari kami!

Seperti biasa, jangan ragu untuk menghubungi kami jika Anda memiliki pertanyaan atau saran. Terima kasih telah membaca!

Cara Membuat Aplikasi Perbandingan Harga E-Commerce menggunakan Selenium dan TkInter awalnya diterbitkan di Towards AI on Medium, di mana orang-orang melanjutkan percakapan dengan menyoroti dan menanggapi cerita ini.

Diterbitkan melalui Menuju AI