zoukankan      html  css  js  c++  java
  • 抓取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;
        }  
  • 相关阅读:
    linux tomcat 突然验证码出不来
    使用open live writer客户端写博客
    创建自己的maven模板
    Dynamic Web Module 3.0 requires Java 1.6 or newer
    win10 操作配置备忘
    Maven使用
    ORA-12514: TNS:listener does not currently know of service …
    PlantUML——4.实例演示1
    C语言基础(一)
    Linux系统挂载FAT32的U盘
  • 原文地址:https://www.cnblogs.com/lixiuming521125/p/6752367.html
Copyright © 2011-2022 走看看