如何使用Java中的JSOUP获取DOM树中任何网页的动态内容

时间:2013-04-04 08:20:58

标签: java html algorithm dom jsoup

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

为此,我使用 JSOUP

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

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

编辑没有。 1

given link所示,它可以在Java中使用 PhantomJS Zombie.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();
    }
}

1 个答案:

答案 0 :(得分:0)

我担心,JSoup在这种情况下无效。

尝试使用HtmlUnit。