Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Mengakses Kandungan Dijana JavaScript dengan JSoup?

Bagaimanakah Saya Boleh Mengakses Kandungan Dijana JavaScript dengan JSoup?

Susan Sarandon
Susan Sarandonasal
2024-12-06 06:38:12655semak imbas

How Can I Access JavaScript-Generated Content with JSoup?

JSoup dan Kandungan Dijana JavaScript

Apabila menghuraikan halaman web dengan JSoup, adalah penting untuk diingat bahawa JSoup ialah penghurai HTML, bukan enjin pelayar. Ini bermakna ia tidak melaksanakan JavaScript dan sebarang kandungan yang ditambahkan secara dinamik pada halaman selepas pemuatan halaman awal tidak dapat dilihat oleh JSoup.

Sebagai contoh, jika anda perlu menghuraikan halaman yang menambahkan teg secara dinamik pada elemen div menggunakan JavaScript, JSoup tidak akan dapat menangkap kandungan tersebut. Elemen itu sendiri mungkin terdapat dalam kod sumber HTML, tetapi teg yang ditambahkan oleh JavaScript tidak akan tersedia untuk JSoup.

Mengakses Kandungan Dijana JavaScript

Untuk mengakses kandungan yang ditambahkan pada halaman oleh JavaScript, anda perlu menggunakan alat yang boleh meniru persekitaran penyemak imbas. Terdapat beberapa perpustakaan Java yang boleh melakukan ini, seperti sebagai:

  • [Selenium](https://www.selenium.dev/)
  • [HtmlUnit](https://htmlunit.sourcefor ge.io/)
  • [JBrowserDriver](https://github.com/JBrowserDriver/JBrowserDriver)

Ini perpustakaan membolehkan anda mencipta contoh pelayar maya dan berinteraksi dengan halaman web seolah-olah ia dipaparkan dalam pelayar sebenar. Ini membolehkan anda melaksanakan JavaScript, mencetuskan peristiwa dan mengakses kandungan yang ditambah secara dinamik.

Contoh Menggunakan Selenium

Berikut ialah contoh menggunakan Selenium untuk mendapatkan kandungan yang dijana JavaScript daripada halaman yang anda rujuk:

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class SeleniumExample {
    public static void main(String[] args) {
        // Set up the WebDriver
        System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
        WebDriver driver = new ChromeDriver();

        // Load the web page
        driver.get("http://www.bestreferat.ru/referat-32558.html");

        // Wait for the div element to be filled with JavaScript
        WebElement tagsList = driver.findElement(By.id("tags_list"));
        WebDriverWait wait = new WebDriverWait(driver, 10);
        wait.until(ExpectedConditions.visibilityOf(tagsList));

        // Get the tags from the div element
        List<WebElement> tags = tagsList.findElements(By.tagName("a"));

        // Print the tags
        for (WebElement tag : tags) {
            System.out.println(tag.getText());
        }

        // Close the WebDriver
        driver.close();
    }
}

Contoh ini menggunakan Selenium untuk memuatkan halaman web, tunggu sehingga Kandungan yang dijana JavaScript untuk ditambahkan, dan kemudian mendapatkan semula teg daripada elemen div.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Kandungan Dijana JavaScript dengan JSoup?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn