Java使用HtmlUnit抓取js渲染页面

Posted 疯子加天才

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java使用HtmlUnit抓取js渲染页面相关的知识,希望对你有一定的参考价值。

需求:

需要采集js渲染的页面,有些网站的页面是js渲染的

实现:

基于htmlUnit实现:

  1. public static void getAjaxPage() throws Exception{  
  2.     WebClient webClient = new WebClient();  
  3.     webClient.setjavascriptEnabled(true);  
  4.     webClient.setCssEnabled(false);  
  5.     webClient.setAjaxController(new NicelyResynchronizingAjaxController());  
  6.     webClient.setTimeout(Integer.MAX_VALUE);  
  7.     webClient.setThrowExceptionOnScriptError(false);  
  8.     HtmlPage rootPage = webClient.getPage("http://tt.mop.com/read_14304066_1_0.html");  
  9.  
  10.     System.out.println(rootPage.asXml());  

maven依赖:

  1. <dependency
  2.     <groupId>net.sourceforge.htmlunit</groupId
  3.     <artifactId>htmlunit-core-js</artifactId
  4.     <version>2.9</version
  5.     <scope>compile</scope
  6. </dependency
  7. <dependency
  8.     <groupId>net.sourceforge.htmlunit</groupId
  9.     <artifactId>htmlunit</artifactId
  10.     <version>2.9</version
  11.     <scope>compile</scope
  12. </dependency

说明:

Nutch插件:nutch-htmlunit用于替换Nutch自身的Http Fetch组件

以上是关于Java使用HtmlUnit抓取js渲染页面的主要内容,如果未能解决你的问题,请参考以下文章

jsoup抓取页面源码的问题、源码被隐藏、

HtmlUnit---网页抓取工具解析及使用

Java_爬虫,如何抓取Js动态生成数据的页面?

java爬虫 异步加载数据怎么解决

如何用JAVA爬取AJAX加载后的页面

Java网页抓取技术HtmlUnit