JSoup und JavaScript-generierte Inhalte
Beim Parsen von Webseiten mit JSoup ist es wichtig zu bedenken, dass JSoup ein HTML-Parser und kein HTML-Parser ist Browser-Engine. Dies bedeutet, dass kein JavaScript ausgeführt wird und alle Inhalte, die der Seite nach dem ersten Laden der Seite dynamisch hinzugefügt werden, für JSoup unsichtbar sind.
Zum Beispiel, wenn Sie eine Seite analysieren müssen, die dynamisch Tags zu einem hinzufügt Wenn Sie ein div-Element mit JavaScript verwenden, kann JSoup diesen Inhalt nicht erfassen. Das Element selbst ist möglicherweise im HTML-Quellcode vorhanden, aber die von JavaScript hinzugefügten Tags stehen JSoup nicht zur Verfügung.
Zugriff auf von JavaScript generierte Inhalte
Zugriff Für Inhalte, die per JavaScript zur Seite hinzugefügt werden, müssen Sie ein Tool verwenden, das eine Browserumgebung emulieren kann. Es gibt mehrere Java-Bibliotheken, die dies tun können, z als:
Diese Mit Bibliotheken können Sie eine virtuelle Browserinstanz erstellen und mit der Webseite interagieren, als ob sie in einem echten Browser gerendert würde. Dadurch können Sie JavaScript ausführen, Ereignisse auslösen und auf den dynamisch hinzugefügten Inhalt zugreifen.
Beispiel für die Verwendung von Selenium
Hier ist ein Beispiel für die Verwendung von Selenium, um den von JavaScript generierten Inhalt abzurufen von der Seite, auf die Sie verwiesen haben:
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(); } }
In diesem Beispiel wird Selenium zum Laden der Webseite verwendet. Warten Sie auf die JavaScript-Generierung Fügen Sie den hinzuzufügenden Inhalt hinzu und rufen Sie dann die Tags aus dem div-Element ab.
Das obige ist der detaillierte Inhalt vonWie kann ich mit JSoup auf JavaScript-generierte Inhalte zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!