Metro2033
2014-07-25 17:44
采纳率: 60%
浏览 1.4k
已采纳

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

 

 

 

很多网站是用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程序中获取其中的数据?

http://xinjinqiao.tprtc.com/admin/main/flrpro.do

 

 

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • 黄菲 2014-07-28 08:21
    已采纳

    我之前也遇到过这个问题,网上说法很多,不过觉得都没有解决问题,后来相过有什么功能可以获取请求某一个url地址时所附带请求的其他链接地址,但是这个好像说是用抓包可以实现,不过我没实现

    只能采用最原始的方法就是就是自己去模拟一个请求,将js中ajax的链接地址拼接出来,再次进行请求,这个时候需要注意post方式还是get方法

    打赏 评论
  • tianchao_ 2014-07-25 18:20
    打赏 评论
  • iteye_9789 2014-07-25 18:41

    看一下页面的js执行的什么异步请求,直接抓取异步请求的url,

    打赏 评论
  • 济洲 2016-06-08 16:24

    兄弟, 你这个弄出来了吗? 我有个类似也抓取不了 help me

    http://credit.ndrc.gov.cn/XYXX/admin_client/form_designer/special/index.html?id=集友银行有限公司福州分行

    :D

    打赏 评论
  • 济洲 2017-09-05 16:52

    可以用谷歌浏览器F12查看。
    会发现有json串的数据。
    根据你这个url会发现 http://xinjinqiao.tprtc.com/admin/main/pro!lrprolist.do?name=flr&nowpage=1&pagesize=10
    有页数还有每页显示的条数这些参数什么的 然后直接就获取到了呀

    打赏 评论