在我的解析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();
}
}
答案 0 :(得分:0)
我担心,JSoup在这种情况下无效。
尝试使用HtmlUnit。