Iklan

Perayapan Web sangat berguna untuk mengotomatiskan tugas-tugas tertentu yang dilakukan secara rutin di situs web. Anda dapat menulis perayap untuk berinteraksi dengan situs web seperti yang dilakukan manusia.

Di dalam artikel sebelumnya Cara Membangun Perayap Web Dasar untuk Menarik Informasi Dari Situs WebPernah ingin menangkap informasi dari sebuah situs web? Berikut ini cara menulis perayap untuk menavigasi situs web dan mengekstrak apa yang Anda butuhkan. Baca selengkapnya , kami membahas dasar-dasar penulisan perayap web Apa itu Pengikisan Web? Cara Mengumpulkan Data Dari Situs WebPernah menemukan diri Anda kehilangan waktu berharga membaca data di halaman web? Berikut cara menemukan data yang Anda inginkan dengan web scraping. Baca selengkapnya menggunakan modul python, scrapy. Keterbatasan pendekatan itu adalah bahwa perayap tidak mendukung javascript. Ini tidak akan berfungsi dengan baik dengan situs web yang banyak menggunakan javascript untuk mengelola antarmuka pengguna. Untuk situasi seperti itu, Anda dapat menulis perayap yang menggunakan Google Chrome dan karenanya dapat menangani javascript seperti browser Chrome yang digerakkan oleh pengguna biasa.

Mengotomatiskan Google Chrome melibatkan penggunaan alat yang disebut Selenium. Ini adalah komponen perangkat lunak yang berada di antara program Anda dan Browser, dan membantu Anda mengarahkan browser melalui program Anda. Pada artikel ini, kami membawa Anda melalui proses lengkap mengotomatisasi Google Chrome. Langkah-langkahnya umumnya meliputi:

  • Menyiapkan Selenium
  • Menggunakan Google Chrome Inspector untuk mengidentifikasi bagian halaman web
  • Menulis program java untuk mengotomatisasi Google Chrome

Untuk tujuan artikel, mari kita selidiki cara membaca Google Mail dari java. Meskipun Google menyediakan API (Application Programming Interface) untuk membaca email, dalam artikel ini kami menggunakan Selenium untuk berinteraksi dengan Google Mail untuk mendemonstrasikan prosesnya. Google Mail banyak menggunakan javascript, dan dengan demikian merupakan kandidat yang baik untuk mempelajari Selenium.

Menyiapkan Selenium

Pengemudi Web

Seperti yang dijelaskan di atas, Selenium terdiri dari komponen perangkat lunak yang berjalan sebagai proses terpisah dan melakukan tindakan atas nama program java. Komponen ini disebut Pengemudi Web dan harus diunduh ke komputer Anda.

Klik disini untuk pergi ke situs unduh Selenium, klik rilis terbaru dan unduh file yang sesuai untuk OS komputer Anda (Windows, Linux, atau MacOS). Ini adalah arsip ZIP yang berisi chromedriver.exe. Ekstrak ke lokasi yang sesuai seperti C:\WebDrivers\chromedriver.exe. Kami akan menggunakan lokasi ini nanti dalam program java.

Modul Java

Langkah selanjutnya adalah mengatur modul java yang diperlukan untuk menggunakan Selenium. Dengan asumsi Anda menggunakan Maven untuk membangun program Java, tambahkan ketergantungan berikut ke Anda POM.xml.

org.seleniumhq.seleniumselenium-java3.8.1

Saat Anda menjalankan proses pembuatan, semua modul yang diperlukan harus diunduh dan disiapkan di komputer Anda.

Langkah Pertama Selenium

Mari kita mulai dengan Selenium. Langkah pertama adalah membuat ChromeDriver contoh:

Driver WebDriver = ChromeDriver baru(); 

Itu akan membuka jendela Google Chrome. Mari kita menavigasi ke halaman pencarian Google.

driver.get(" http://www.google.com"); 

Dapatkan referensi ke elemen input teks sehingga kami dapat melakukan pencarian. Elemen input teks memiliki nama Q. Kami menemukan elemen HTML pada halaman menggunakan metode WebDriver.findElement().

Elemen WebElement = driver.findElement (By.name("q")); 

Anda dapat mengirim teks ke elemen apa pun menggunakan metode kirimKeys(). Mari kita mengirim istilah pencarian dan mengakhirinya dengan baris baru sehingga pencarian segera dimulai.

element.sendKeys("terminator\n"); 

Sekarang pencarian sedang berlangsung, kita perlu menunggu halaman hasil. Kita dapat melakukannya sebagai berikut:

baru WebDriverWait (driver, 10) .sampai (d -> d.getTitle().toLowerCase().startsWith("terminator")); 

Kode ini pada dasarnya memberitahu Selenium untuk menunggu selama 10 detik dan kembali ketika judul halaman dimulai dengan terminator. Kami menggunakan fungsi lambda untuk menentukan kondisi yang harus ditunggu.

Sekarang kita bisa mendapatkan judul halaman.

System.out.println("Judul: " + driver.getTitle()); 

Setelah Anda selesai dengan sesi, jendela browser dapat ditutup dengan:

driver.berhenti(); 

Dan itu, teman-teman, adalah sesi browser sederhana yang dikendalikan menggunakan Java melalui Selenium. Tampaknya cukup sederhana, tetapi memungkinkan Anda untuk memprogram banyak hal yang biasanya harus Anda lakukan dengan tangan.

Menggunakan Inspektur Google Chrome

Inspektur Google Chrome Cari Tahu Masalah Situs Web Dengan Alat Pengembang Chrome Atau FirebugJika Anda telah mengikuti tutorial jQuery saya sejauh ini, Anda mungkin telah mengalami beberapa masalah kode dan tidak tahu cara memperbaikinya. Ketika dihadapkan dengan sedikit kode yang tidak berfungsi, itu sangat ... Baca selengkapnya adalah alat yang sangat berharga untuk mengidentifikasi elemen yang akan digunakan dengan Selenium. Hal ini memungkinkan kita untuk menargetkan elemen yang tepat dari java untuk mengekstrak informasi serta tindakan interaktif seperti mengklik tombol. Berikut adalah panduan tentang cara menggunakan Inspektur.

Buka Google Chrome dan navigasikan ke halaman, katakan halaman IMDb untuk Liga Keadilan (2017).

Mari kita temukan elemen yang ingin ditargetkan, kata ringkasan film. Klik kanan pada ringkasan dan pilih "Periksa" dari menu popup.

cara membuat web crawler dengan selenium

Dari tab "Elemen", kita dapat melihat bahwa teks ringkasan adalah div dengan kelas ringkasan_teks.

cara membuat web crawler dengan selenium

Menggunakan CSS atau XPath untuk Seleksi

Selenium mendukung pemilihan elemen dari halaman menggunakan CSS. (Dialek CSS yang didukung adalah CSS2). Misalnya untuk memilih teks ringkasan dari halaman IMDb di atas, kita akan menulis:

Ringkasan WebElementEl = driver.findElement (By.cssSelector("div.summary_text")); 

Anda juga dapat menggunakan XPath untuk memilih elemen dengan cara yang sangat mirip (Go di sini untuk spesifikasi). Sekali lagi, untuk memilih teks ringkasan, kita akan melakukan:

Ringkasan WebElementEl = driver.findElement (By.xpath("//div[@class='summary_text']")); 

XPath dan CSS memiliki kemampuan yang sama sehingga Anda dapat menggunakan apa pun yang Anda sukai.

Membaca Google Mail Dari Java

Sekarang mari kita lihat contoh yang lebih kompleks: mengambil Google Mail.

Mulai Driver Chrome, navigasikan ke gmail.com dan tunggu hingga halaman dimuat.

Driver WebDriver = ChromeDriver baru(); driver.get(" https://gmail.com"); baru WebDriverWait (driver, 10) .until (d -> d.getTitle().toLowerCase().startsWith("gmail")); 

Selanjutnya, cari kolom email (diberi nama dengan id pengenalId) dan masukkan alamat email. Klik Lanjut tombol dan tunggu halaman kata sandi dimuat.

/* Ketik nama pengguna/email */ { driver.findElement (By.cssSelector("#identifierId")).sendKeys (email); driver.findElement (By.cssSelector(".RveJvd")).click(); } WebDriverWait baru (driver, 10) .sampai (d ->! d.findElements (By.xpath("//div[@id='password']")).isEmpty() );

Sekarang, kita masukkan kata sandi, klik Lanjut tombol lagi dan tunggu halaman Gmail dimuat.

/* Ketik kata sandi */ { driver .findElement (By.xpath("//div[@id='password']//input[@type='password']")) .sendKeys (password); driver.findElement (By.cssSelector(".RveJvd")).click(); } WebDriverWait baru (driver, 10) .sampai (d ->! d.findElements (By.xpath("//div[@class='Cp']")).isEmpty() );

Ambil daftar baris email dan ulangi setiap entri.

Daftarrows = driver .findElements (By.xpath("//div[@class='Cp']//table/tbody/tr")); untuk (WebElement tr: baris) { }

Untuk setiap entri, ambil Dari bidang. Perhatikan bahwa beberapa entri Dari dapat memiliki beberapa elemen bergantung pada jumlah orang dalam percakapan.

{ /* Dari Elemen */ System.out.println("Dari: "); for (WebElement e: tr .findElements (By.xpath(".//div[@class='yW']/*"))) { System.out.println(" " + e.getAttribute("email") + ", " + e.getAttribute("nama") + ", " + e.getText()); } }

Sekarang, ambil subjeknya.

{ /* Subjek */ System.out.println("Sub: " + tr.findElement (By.xpath(".//div[@class='yNN']")).getText()); }

Dan tanggal dan waktu pesan.

{ /* Tanggal/Waktu */ WebElement dt = tr.findElement (By.xpath("./td[8]/*")); System.out.println("Tanggal: " + dt.getAttribute("judul") + ", " + dt.getText()); }

Berikut adalah jumlah total baris email di halaman.

System.out.println (rows.size() + " mail."); 

Dan akhirnya, kita selesai jadi kita keluar dari browser.

driver.berhenti(); 

Untuk rekap, Anda dapat menggunakan Selenium dengan Google Chrome untuk merayapi situs web yang banyak menggunakan javascript. Dan dengan Google Chrome Inspector, cukup mudah untuk mengerjakan CSS atau XPath yang diperlukan untuk mengekstrak atau berinteraksi dengan elemen.

Apakah Anda memiliki proyek yang mendapat manfaat dari penggunaan Selenium? Dan masalah apa yang Anda hadapi dengannya? Silakan jelaskan di komentar di bawah.