很多网站是用js
或Jquery
生成数据的,到后台获取到数据以后,用 document.write()
或者("#id").html=""
的方式 写到页面中,这个时候用浏览器查看源码是看不到数据的。
HttpClient
是不行的,看网上说HtmlUnit
,说 可以获取后台js加载完后的完整页面,但是我按照文章上说的 写了 ,都不好使。一般的代码是这样写的:
String url = "http://xinjinqiao.tprtc.com/admin/main/flrpro.do";
try {
WebClient webClient = new WebClient(BrowserVersion.FIREFOX_10);
//设置webClient的相关参数
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getOptions().setCssEnabled(false);
webClient.setAjaxController(new NicelyResynchronizingAjaxController());
//webClient.getOptions().setTimeout(50000);
webClient.getOptions().setThrowExceptionOnScriptError(false);
//模拟浏览器打开一个目标网址
HtmlPage rootPage = webClient.getPage(url);
System.out.println("为了获取js执行的数据 线程开始沉睡等待");
Thread.sleep(3000);//主要是这个线程的等待 因为js加载也是需要时间的
System.out.println("线程结束沉睡");
String html = rootPage.asText();
System.out.println(html);
} catch (Exception e) {
}
其实根本不好使。
其中典型的就是这个链接的页面,怎么能在java程序中获取其中的数据?
你的方向错了。你应该抓取实际的数据源。而不那个显示页面。
我给你的地址就实际数据源。恭喜你页面大小你可以自己控制。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。