很多网站是用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
我之前也遇到过这个问题,网上说法很多,不过觉得都没有解决问题,后来相过有什么功能可以获取请求某一个url地址时所附带请求的其他链接地址,但是这个好像说是用抓包可以实现,不过我没实现
只能采用最原始的方法就是就是自己去模拟一个请求,将js中ajax的链接地址拼接出来,再次进行请求,这个时候需要注意post方式还是get方法
htmlunit 你试试
[url]http://www.cnblogs.com/yhdino/p/3263219.html[/url]
[url]http://drizzlewalk.blog.51cto.com/2203401/1118523[/url]
看一下页面的js执行的什么异步请求,直接抓取异步请求的url,
兄弟, 你这个弄出来了吗? 我有个类似也抓取不了 help me
http://credit.ndrc.gov.cn/XYXX/admin_client/form_designer/special/index.html?id=集友银行有限公司福州分行
:D
可以用谷歌浏览器F12查看。
会发现有json串的数据。
根据你这个url会发现 http://xinjinqiao.tprtc.com/admin/main/pro!lrprolist.do?name=flr&nowpage=1&pagesize=10
有页数还有每页显示的条数这些参数什么的 然后直接就获取到了呀