JSoup と JavaScript で生成されたコンテンツ
JSoup を使用して Web ページを解析する場合、JSoup は HTML パーサーであり、パーサーではないことを覚えておくことが重要です。ブラウザエンジン。これは、JavaScript を実行せず、最初のページの読み込み後にページに動的に追加されたコンテンツは JSoup には表示されないことを意味します。
たとえば、タグを動的に追加するページを解析する必要がある場合、 div 要素に JavaScript を使用すると、JSoup はそのコンテンツをキャプチャできなくなります。要素自体は HTML ソース コードに存在する可能性がありますが、JavaScript によって追加されたタグは JSoup では利用できません。
JavaScript で生成されたコンテンツへのアクセス
アクセスするにはJavaScript によってページにコンテンツが追加される場合は、ブラウザ環境をエミュレートできるツールを使用する必要があります。これを行うことができる Java ライブラリがいくつかあります。例:
これらライブラリを使用すると、仮想ブラウザ インスタンスを作成し、実際のブラウザでレンダリングされているかのように Web ページを操作できます。これにより、JavaScript を実行し、イベントをトリガーし、動的に追加されたコンテンツにアクセスできるようになります。
Selenium を使用した例
Selenium を使用して JavaScript で生成されたコンテンツを取得する例を次に示します。参照したページから:
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(); } }
この例では、Selenium を使用して Web ページを読み込みます。追加する JavaScript 生成コンテンツを指定し、div 要素からタグを取得します。
以上がJSoup を使用して JavaScript で生成されたコンテンツにアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。