首页 > 代码库 > 抓取js动态生成数据
抓取js动态生成数据
最近在抓数据,一般的网页数据抓取相对容易一些,今天在抓电视猫的节目单,发现有些数据时抓取不到的,Java端得到的HTML文件里面没有某一段代码,查了很多资料,发现说是js动态生成的数据,无法直接抓取,有一种解决方法是利用找到ajax请求地址和参数,重新抓取,该方法存在一个问题,就是当参数被加密过时,该方法就不好用了,所以,这里用了一个办法,就是利用HTMLunit来抓取(可以利用jsuop来处理HTML文件),jar包下载地址:http://download.csdn.net/detail/joy460154849/9822849(HTMLunit所用到的jar包全部导入后,稍微调整一下,因为有些有重复导入或者版本问题)代码如下:
public static String getHtml(String url){ // 模拟一个浏览器 @SuppressWarnings("resource") WebClient webClient = new WebClient(); //webclient参数载体 WebClientOptions clientOptions = webClient.getOptions(); // 设置webClient的相关参数 clientOptions.setJavaScriptEnabled(true); clientOptions.setCssEnabled(false); webClient.setAjaxController(new NicelyResynchronizingAjaxController()); clientOptions.setTimeout(35000); clientOptions.setThrowExceptionOnScriptError(false); // 模拟浏览器打开一个目标网址 HtmlPage rootPage = null; try { rootPage = webClient.getPage(html); } catch (FailingHttpStatusCodeException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (MalformedURLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } //保存页面 //rootPage.save(new File("/home/share/Test/1")); //body html信息 HtmlElement htmlElement = rootPage.getBody(); String xmlContent = htmlElement.asXml(); return xmlContent; }
抓取js动态生成数据
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。