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

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方法

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试
  • ¥20 问题请教!vue项目关于Nginx配置nonce安全策略的问题
  • ¥15 教务系统账号被盗号如何追溯设备
  • ¥20 delta降尺度方法,未来数据怎么降尺度
  • ¥15 c# 使用NPOI快速将datatable数据导入excel中指定sheet,要求快速高效
  • ¥15 再不同版本的系统上,TCP传输速度不一致
  • ¥15 高德地图2.0 版本点聚合中Marker的位置无法实时更新,如何解决呢?
  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题