private void trySaveParseResults(List<ParseResult> results) {
    CacheClient session = CommonUtils.getCacheClient();
    int count = 0;
    try {
      for (int i = 0; i < results.size(); i++) {
        ParseResult result = results.get(i);
        try {
          if (!CommonUtils.checkUrl(session, result.getPage().getUrl())) {
            WebPage page = result.getPage();
            String content = result.getContent();
            // 保存文章到HBase文档服务器
            try {
              if (SystemProps.storeable()) {
                CommonUtils.storage(true, page.getId(), content, true);
              }
            } catch (Exception e) {
              LOGGER.error("保存至文档服务器失败! : " + e.getMessage());
              continue;
            }
            // 保存页面到sql数据库
            // WebPageRepository.save(page);
            try {
              WebPageManager.getInstance().savePage(page);
            } catch (SQLException e) {
              LOGGER.error(e.getMessage() + "保存至sql数据库失败", e);
              continue;
            } catch (Exception e) {
              LOGGER.error(e.getMessage() + "保存至sql数据库失败", e);
              continue;
            }

            // 保存contentUrl,即AJAX的JSON数据的URL
            CommonUtils.storeUrl(session, page.getUrl());
            count++;
          }
        } catch (Exception e) {
          LOGGER.error(e.getMessage(), e);
        }
      }
    } finally {
      LOGGER.info("存放爬取结果" + count + "条");

      try {
        CommonUtils.recycleCacheClient(session);
      } catch (Exception e) {
        LOGGER.error(e.getMessage() + "释放cacheclient失败");
      }
    }
  }
  /**
   * 根据ajax请求链接爬取内容 解析流程是:从rawUrl拼接上城市和limit组成一个原始页面的ajax请求url,获取内容解析成JSONArray,
   * array中的一项包含有title,和url_163属性("/docs/10/2015052804/AQM4VA369001VA37.html")
   * 和rawPageUrl:"http://j.news.163.com"拼接后得到访问的页面 我们在url缓存,存入mysql以及HBase的url都是这个pageUrl
   * docID("AQM4VA369001VA37"),利用docID填充入rawContentUrl
   * :"http://j.news.163.com/hy/doc.s?info=2&type=10&hash=&docid=%s" 组成一条新闻的ajax请求,请求返回的是一个json字符串
   * 解析之后,得到contentJSON,根据这个数据得到里面的content,publish_date字段
   *
   * @param url 从createUrl中获取到的拼接好的字符串,这是一条某城市新闻的ajax请求页面
   * @author BAO
   */
  private void craw(String url, List<ParseResult> list) {
    String html = null;
    try {
      html = WangyiPageParser.getHtmlFromUrl(url);
    } catch (BaseHttpException e1) {
      LOGGER.error(e1.getMessage() + "获取AJAX页面失败", e1);
      return;
    }

    // 解析ajax请求主页的json,如果失败就直接返回
    JSONArray array = null;
    try {
      array = JSONArray.parseArray(html);
    } catch (Exception e) {
      LOGGER.error(e.getMessage() + "页面JSON解析失败", e);
      return;
    }

    for (int i = 0; i < array.size(); i++) {
      JSONObject obj = null;
      try {
        obj = array.getJSONObject(i);
      } catch (Exception e) {
        LOGGER.error(e.getMessage() + "JSON内容获取失败", e);
      }
      // 如果obj为null,就跳过
      if (obj == null) continue;

      ParseResult result = parsePage(obj);

      if (result != null) {
        list.add(result);
      }

      if (!SystemProps.isTest()) {
        TimerUtils.delayForSeconds(2);
      }
    }
  }