Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Mengakses Kandungan Dijana JavaScript dengan 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:
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!