JavaRush /Java Blog /Random-ID /Penguraian HTML yang mudah dengan jsoup
Stanislav
Level 21
Москва

Penguraian HTML yang mudah dengan jsoup

Dipublikasikan di grup Random-ID
Mungkin suatu hari nanti Anda perlu mendapatkan informasi dari situs web atau dokumen HTML di aplikasi Anda, dan saya akan mengatakan tanpa basa-basi lagi bahwa menggunakan perpustakaan jsoup akan sangat menyederhanakan tugas Anda. Menurut wiki , jsoup adalah perpustakaan Java open source yang dirancang untuk mengurai, mengekstraksi, dan memanipulasi data yang disimpan dalam dokumen HTML.

Mulai cepat

Pustaka dapat diunduh sebagai file jar dan ditempatkan dalam proyek, atau dihubungkan menggunakan Maven/Gradle. Saya akan meninggalkan tautan ke situs resminya di akhir artikel: di sana Anda dapat menemukan versi perpustakaan saat ini. Dalam contoh kita akan menggunakan koneksi melalui Maven. Mari tambahkan ketergantungan:
<​dependency​>
  <​groupId>org.jsoup</groupId>
  <​artifactId>jsoup</artifactId>
  <​version>1.11.3</version>
</dependency>

Penggunaan

Pertama-tama, Anda perlu mendapatkan instance kelas Documentdari org.jsoup.nodes.Document yang menunjukkan sumber penguraian. Ini bisa berupa file lokal atau tautan. Misalnya, dalam artikel ini kita akan menggunakan situs web yandex.ru dan mencoba mendapatkan feed berita terkini:
Document doc = Jsoup.connect("https://yandex.ru/")
                .userAgent("Chrome/4.0.249.0 Safari/532.5")
                .referrer("http://www.google.com")
                .get();
User Agentadalah pengidentifikasi yang dikomunikasikan ke situs yang dikunjungi. Di banyak situs, ini adalah kriteria terpenting untuk filter antispam. Referrerberisi URL sumber permintaan. Metode ini get()melempar IOException yang ditangani, sehingga kita dapat menggabungkan semuanya dalam try/catchsatu blok, atau membuangnya lebih jauh dengan throws. Kami sekarang telah menerima kode sumber untuk halaman ini. Jika perlu, perpustakaan jsoup sendiri dapat memulihkan elemen yang rusak. Sekarang yang harus kita lakukan adalah mempersempit pencarian ke blok terpisah. Metode ini select()memiliki banyak pilihan kegunaan: memungkinkan Anda mencari elemen berdasarkan tag, atribut, kelas, dan parameter lainnya. Hampir semua browser modern mendukung kemampuan mencari kode sumber elemen yang dipilih dengan cepat. Dengan manipulasi sederhana, kita menemukan kode sumber elemen yang kita perlukan dan mendapatkan divblok dengan kelas yang ditentukan, yang akan kita gunakan untuk pengambilan sampel. Penguraian HTML yang mudah menggunakan jsoup - 1Mari gunakan kelas Elementsdari org.jsoup.select.Elements untuk memilih semua elemen dari blok yang kita pilih.
Elements listNews = doc.select("div#tabnews_newsc.content-tabs__items.content-tabs__items_active_true");
Sekarang kita mempunyai sesuatu seperti ini: Penguraian HTML yang mudah menggunakan jsoup - 2Sekarang yang harus kita lakukan adalah menggunakan loop kecil untuk mengulangi semua elemen:
for (Element element : listNews.select("a"))
            System.out.println(element.text());
Metode ini text()memungkinkan Anda membuang kode markup dan hanya menyisakan kombinasi teks untuk semua elemen yang masuk. Hasil eksekusinya adalah sebagai berikut: Penguraian HTML yang mudah menggunakan jsoup - 3Sangat mudah untuk melihat bahwa jumlah baris sebenarnya yang diterima tidak sesuai dengan tampilan sebenarnya pada halaman. Di sinilah letak jebakannya. Jika Anda melihat kode sumber markup, Anda akan melihat bahwa berita terbaru berubah secara animasi pada interval waktu tertentu. Beberapa dari “batu” ini dipecahkan dengan pengambilan sampel tambahan, dan tentu saja, pengujian. Ternyata lima elemen pertama berisi informasi yang kita perlukan, dan elemen keenam hanya berisi baris kosong skrip. Hal ini juga terjadi bahwa blok tidak memiliki pengidentifikasi apa pun, maka dimungkinkan untuk langsung menunjuk menggunakan metode get(int index)ke nomor posisi elemen yang dimaksud.
System.out.println(listNews.select("a").get(2).text());

Kesimpulan

Contoh ini hanya menunjukkan sebagian kecil dari kemampuan jsoup. Ada juga fakta bahwa situs sering diperbarui, mengubah struktur kode markup, jadi saat bekerja dengan scraping, Anda harus siap beradaptasi dengan perubahan. Anda dapat memperoleh informasi lebih lanjut dan versi terkini di situs resmi jsoup.org ; Anda dapat membaca lebih lanjut tentang kelas dan metode di o7planning.org . Saya akan meninggalkan tautan ke github saya , pada saat penulisan ini ada beberapa bot Telegram yang menggunakan Jsoup untuk menerima dan menampilkan informasi.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION