【问题标题】:How to get dynamic contents of any web page in DOM tree using JSOUP in Java如何在 Java 中使用 JSOUP 获取 DOM 树中任何网页的动态内容
【发布时间】:2013-03-26 05:14:45
【问题描述】:

在我的项目中,解析 HTML 页面,然后使用 DOM 树进行不同的操作,就像比较两个 URL 的模板。

为此,我正在使用 JSOUP

但它无法在 DOM 树中加载动态内容。

你能告诉我如何在 Java 中使用 JSOUP 加载动态内容,或者你能告诉我任何其他方法吗?

编辑编号。 1

正如given link 所示,它在 Java 中使用 PhantomJSZombie.js 工作。你能告诉我该怎么做吗?

2号编辑

我首先尝试使用Selenium获取动态页面,代码如下,

public static void main(String[] args) throws IOException {

 // Selenium
 WebDriver driver = new FirefoxDriver();
 driver.get("ANY URL HERE");  
 String html_content = driver.getPageSource();
 driver.get("ANOTHER URL HERE");
 String html_content1 = driver.getPageSource();
 driver.close();

 // Jsoup makes DOM here by parsing HTML content
 Document doc1 = Jsoup.parse(html_content);
 Document doc2 = Jsoup.parse(html_content1);

 // OPERATIONS USING DOM TREE
}

但这在优化后也需要很多时间。现在按照您的指示,我搬到了 HtmlUnit。 但我无法编写代码,将 Dynamic Page 源代码转换为 String ,然后我使用此 String 使用 Jsoup 进行进一步配对,帮助我使用 HtmlUnit 编写该代码。

使用 HtmlUnit 的代码 :-

package XXX.YYY.ZZZ.Template_Matching;

import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
import org.junit.Assert;
import org.junit.Test;

/**
 *
 * @author jhamb
 */
public class HtmlUnit {

    @Test
    public void homePage() throws Exception {
        final WebClient webClient = new WebClient();
        final HtmlPage page = webClient.getPage("http://www.jabong.com/Yepme-3-4Th-Sleeve-Printed-Blue-Top-Mksp-191481.html");

        Document ht = page.getOwnerDocument();
        System.out.println(ht);

        webClient.closeAllWindows();
    }

    public static void main(String[] args) throws Exception {
        HtmlUnit htmlUnit = new  HtmlUnit();
        htmlUnit.homePage();
    }
}

【问题讨论】:

  • 你是如何解决这个问题的?你能得到你想要的吗
  • 为了获得动态内容,我使用了 Selenium 和 GhostDriver。
  • 是的,我完成了那个项目。

标签: java html algorithm dom jsoup


【解决方案1】:

恐怕 JSoup 在这种情况下不起作用。

尝试使用 HtmlUnit。

【讨论】:

  • HtmlUnit 是否与 Jsoup 一样高效,用于解析和构建 DOM 树? HTMLUnit 是否包含 Jsoup 包含的所有方法?我们可以用 Jsoup + Selenium 做同样的工作吗?
  • 请参阅上面的第 1 条编辑我给定的任务。
  • 请告诉我实施指南。我不知道如何从 HtmlUnit 开始,这对获取动态内容有什么帮助。
  • 嘿,它使用 Selenium,但它占用了整个处理时间的 95%。 HtmlUnit 比 Selenium 快吗?看我的问题stackoverflow.com/questions/15830334/…
猜你喜欢
  • 2023-03-27
  • 2020-01-21
  • 1970-01-01
  • 2013-02-16
  • 1970-01-01
  • 2017-10-22
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
相关资源
最近更新 更多