2

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

为此,我正在使用JSOUP

但它不能在 DOM 树中加载动态内容。

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

编辑编号 1

给定的链接所示,它在 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();
    }
}
4

1 回答 1

0

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

尝试使用 HtmlUnit。

于 2013-04-04T08:40:15.267 回答