亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? commonengine.java

?? 網頁采集系統 ================= 安裝配置 ------- 1 程序我就不說了 2 配置文件 applicationContext.xml 里面有詳細的注釋 3 已經
?? JAVA
字號:
package com.laozizhu.search.impl;

import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import com.laozizhu.search.Engine;
import com.laozizhu.search.Item;
import com.laozizhu.search.ItemBase;
import com.laozizhu.search.util.HTMLDecoder;
import com.laozizhu.search.util.PageService;

/**
 * 搜索引擎的基礎實現。<br>
 * 可以用來調度解析的整個過程。<br>
 * 部分細節可以在子類重寫一些方法來實現。
 * 
 * @author 老紫竹(laozizhu.com)
 */
public class CommonEngine implements Engine {
  /**
   * 在得到正文之后,可以進行一些自定義的處理。
   * 
   * @param body 解析后的未經處理的文本。
   * @return 處理后的文本
   */
  public String afterBody(String body) {
    return body;
  }

  public String afterTitle(String title) {
    return title;
  }

  /**
   * 解析URL
   */
  public Item parseItem(String url) {
    String str = PageService.getPage(url, getCharset());
    Item item = new ItemBase();
    item.setUrl(url);
    Matcher m = getTitlePattern().matcher(str);
    if (m.find()) {
      item.setTitle(afterTitle(m.group(1).trim()));
    }
    m = getAuthorPattern().matcher(str);
    if (m.find()) {
      item.setAuthor(m.group(1).trim());
    }
    m = getDatetPattern().matcher(str);
    if (m.find()) {
      int num = m.groupCount();
      String date;
      if (num > 1) {
        StringBuilder b = new StringBuilder();
        for (int i = 1; i <= num; i++) {
          b.append(m.group(i));
        }
        date = b.toString();
      } else {
        date = m.group(1).trim();
      }
      item.setDatetimeCreate(date);
    }
    StringBuilder b = new StringBuilder();
    Iterator<Pattern> it = getBodyPatternList().iterator();
    while (it.hasNext()) {
      m = it.next().matcher(str);
      while (m.find()) {
        b.append(m.group(1).trim());
        b.append("<hr class='laozizhu'/>");
      }
    }
    item.setBody(afterBody(b.toString()));
    if (isStripHtml()) {
      item.setBody(stripHtml(item.getBody()));
    }
    return item;
  }

  private String titlePatternString;

  private String authorPatternString;

  private String datePatternString;

  private List<String> bodyPatternStringList;

  private Pattern titlePattern;

  private Pattern authorPattern;

  private Pattern datetPattern;

  private List<Pattern> bodyPatternList;

  /**
   * 得到標題的正則表達式。
   * 
   * @return
   */
  protected Pattern getTitlePattern() {
    if (titlePattern == null) {
      synchronized (this) {
        if (titlePattern == null) {
          if (getTitlePatternString() == null) {
            titlePattern = titlePatternDefault;
          } else {
            titlePattern = Pattern.compile(getTitlePatternString(), Pattern.DOTALL);
          }
        }
      }
    }
    return titlePattern;
  }

  /**
   * 獲得作者的正則表達式
   * 
   * @return
   */
  protected Pattern getAuthorPattern() {
    if (authorPattern == null) {
      synchronized (this) {
        if (authorPattern == null) {
          if (getAuthorPatternString() == null) {
            authorPattern = authorPatternDefault;
          } else {
            authorPattern = Pattern.compile(getAuthorPatternString(), Pattern.DOTALL);
          }
        }
      }
    }
    return authorPattern;
  }

  /**
   * 獲得主題的正則表達式列表
   * 
   * @return
   */
  protected List<Pattern> getBodyPatternList() {
    if (bodyPatternList == null) {
      synchronized (this) {
        if (bodyPatternList == null) {
          bodyPatternList = new LinkedList<Pattern>();
          for (String str : getBodyPatternStringList()) {
            bodyPatternList.add(Pattern.compile(str, Pattern.DOTALL));
          }
        }
      }
    }
    return bodyPatternList;
  }

  /**
   * 獲得日期的正則表達式
   * 
   * @return
   */
  protected Pattern getDatetPattern() {
    if (datetPattern == null) {
      synchronized (this) {
        if (datetPattern == null) {
          datetPattern = Pattern.compile(getDatePatternString(), Pattern.DOTALL);
        }
      }
    }
    return datetPattern;
  }

  public String getTitlePatternString() {
    return titlePatternString;
  }

  public void setTitlePatternString(String titlePatternString) {
    this.titlePatternString = titlePatternString;
  }

  public String getAuthorPatternString() {
    return authorPatternString;
  }

  public void setAuthorPatternString(String authorPatternString) {
    this.authorPatternString = authorPatternString;
  }

  public String getDatePatternString() {
    return datePatternString;
  }

  public void setDatePatternString(String datePatternString) {
    this.datePatternString = datePatternString;
  }

  public List<String> getBodyPatternStringList() {
    return bodyPatternStringList;
  }

  public void setBodyPatternStringList(List<String> bodyPatternStringList) {
    this.bodyPatternStringList = bodyPatternStringList;
  }

  // 默認的標題正則
  private static final Pattern titlePatternDefault = Pattern.compile("(?i)<title>(.*?)</title>", Pattern.DOTALL);

  // 默認的作者正則
  private static final Pattern authorPatternDefault = Pattern.compile("(?i)<meta name=\"Author\".*?content=\"(.+?)\".*?>",
      Pattern.DOTALL);

  // 是否去掉HTML標記
  private boolean stripHtml = true;

  public boolean isStripHtml() {
    return stripHtml;
  }

  public void setStripHtml(boolean stripHtml) {
    this.stripHtml = stripHtml;
  }

  // 引擎處理的字符集
  private String charset = "UTF-8";

  public void setCharset(String charset) {
    this.charset = charset;
  }

  /**
   * 得到網站的編碼
   * 
   * @return
   */
  public String getCharset() {
    return charset;
  }

  /**
   * 去掉字符串里面的html代碼。<br>
   * 要求數據要規范,比如大于小于號要配套,否則會被集體誤殺。
   * 
   * @param content 內容
   * @return 去掉后的內容
   */
  public static String stripHtml(String content) {
    // <p>段落替換為換行
    content = content.replaceAll("(?i)<p.*?>", "\r\n");
    // <h1>=<h9>段落替換為換行
    content = content.replaceAll("(?i)<h\\d>", "\r\n");
    // <br><br/><br />等替換為換行
    content = content.replaceAll("(?i)<br\\s*/?>", "\r\n");
    // 去掉其它的</>和<>之間的東西
    content = content.replaceAll("<.*?/>", "");
    content = content.replaceAll("<.*?>", "");
    // 編碼特殊字符
    content = HTMLDecoder.decode(content);
    content = net.java2000.tools.StrTools.htmlencode(content);
    // 去掉多個換行
    content = content.replaceAll("(\r?\n(\\s*\r?\n)+)", "\r\n");
    return content;
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩无一区二区| 一二三四社区欧美黄| 亚洲少妇最新在线视频| 日韩专区欧美专区| 不卡av在线网| 欧美一级二级三级蜜桃| 亚洲精品日韩综合观看成人91| 蜜桃视频一区二区| 欧美日韩三级一区| 最新热久久免费视频| 国产精品夜夜爽| 日韩免费高清视频| 日韩影院精彩在线| 欧美色综合网站| 亚洲激情校园春色| gogo大胆日本视频一区| 国产欧美日本一区视频| 激情综合一区二区三区| 日韩一区二区三区在线观看| 亚洲妇女屁股眼交7| 91视频.com| 综合激情成人伊人| eeuss影院一区二区三区| 国产喂奶挤奶一区二区三区| 精品一区二区三区免费播放| 日韩午夜激情电影| 日韩成人精品在线观看| 欧美日精品一区视频| 亚洲黄色尤物视频| 91久久奴性调教| 一区二区三区精品在线| 91久久免费观看| 亚洲午夜一区二区| 欧美日韩国产欧美日美国产精品| 伊人色综合久久天天| 欧美性色黄大片| 亚洲一区二区高清| 欧美久久一二三四区| 亚洲成人av电影| 欧美疯狂性受xxxxx喷水图片| 午夜国产不卡在线观看视频| 9191精品国产综合久久久久久| 视频一区视频二区在线观看| 欧美一区二区高清| 麻豆精品视频在线| 国产欧美va欧美不卡在线| 懂色av一区二区夜夜嗨| 日韩美女视频19| 欧美日韩aaa| 极品少妇一区二区| 国产精品二三区| 欧美午夜精品久久久久久超碰| 亚洲国产精品一区二区www在线| 欧美日韩国产免费| 国产一区二区中文字幕| 国产精品久久午夜夜伦鲁鲁| 色欧美日韩亚洲| 免费成人结看片| 国产午夜精品福利| 欧美在线视频日韩| 狠狠色2019综合网| 亚洲精品一二三| 欧美电影免费观看高清完整版| 国产成人高清视频| 亚洲一区二区高清| 久久久久九九视频| 在线观看网站黄不卡| 蜜臀国产一区二区三区在线播放| 久久久久97国产精华液好用吗| 一本久道久久综合中文字幕| 日本不卡高清视频| 1024国产精品| 精品日韩在线观看| 欧美亚洲日本一区| 精品午夜一区二区三区在线观看| 中文字幕一区二区三区乱码在线| 91精品国产综合久久久久久| 国产成人高清视频| 免费在线看一区| 亚洲精品国产品国语在线app| 日韩精品中文字幕在线不卡尤物 | 日韩一区二区中文字幕| 成人激情开心网| 男女男精品视频| 亚洲精品乱码久久久久久日本蜜臀| 日韩你懂的在线播放| 色一区在线观看| 国产999精品久久久久久绿帽| 亚洲国产乱码最新视频| √…a在线天堂一区| 久久人人超碰精品| 91麻豆精品国产91久久久久久 | 蜜桃精品视频在线观看| 悠悠色在线精品| 国产精品全国免费观看高清 | 久久先锋影音av| 欧美日韩一级大片网址| 成人动漫在线一区| 国产伦理精品不卡| 九九九精品视频| 三级欧美在线一区| 亚洲一区二区三区四区在线观看 | 日韩欧美国产一区二区三区| 在线免费不卡电影| 91在线你懂得| 风流少妇一区二区| 国产原创一区二区| 蜜桃久久久久久久| 久久精品国产亚洲a| 蜜臀av一区二区三区| 天堂影院一区二区| 亚洲444eee在线观看| 一区二区激情小说| 亚洲欧美国产77777| 国产精品妹子av| 国产精品久久久久久久久免费桃花| 欧美精品一区二区在线观看| 欧美一级免费大片| 日韩一区二区三区在线观看| 日韩午夜在线影院| 日韩免费成人网| 精品国产伦理网| 久久一区二区三区四区| 久久精品欧美一区二区三区麻豆| 国产欧美精品一区二区三区四区| 国产日韩欧美激情| 亚洲色图另类专区| 亚洲精品美腿丝袜| 午夜激情综合网| 久久www免费人成看片高清| 激情综合色播五月| 国产精品456| 91丨porny丨国产入口| 欧美亚洲动漫另类| 日韩视频一区二区在线观看| 亚洲精品一区二区在线观看| 中文字幕不卡在线播放| 亚洲女子a中天字幕| 亚洲二区视频在线| 久久精品国产99国产| 风间由美中文字幕在线看视频国产欧美 | 麻豆成人在线观看| 国产精品99久久久| 色妞www精品视频| 6080午夜不卡| 国产偷v国产偷v亚洲高清| 亚洲视频你懂的| 裸体歌舞表演一区二区| 国产白丝网站精品污在线入口| 色噜噜狠狠成人中文综合| 日韩欧美在线一区二区三区| 国产三级精品在线| 亚洲午夜一二三区视频| 国产风韵犹存在线视精品| 一本色道a无线码一区v| 欧美成人免费网站| 一区二区三区欧美激情| 久久精品久久综合| 91福利小视频| 国产午夜精品美女毛片视频| 亚洲国产视频一区二区| 高清成人在线观看| 欧美一区二区三区在线观看| 综合久久国产九一剧情麻豆| 免费在线观看精品| 91电影在线观看| 日本一区二区三区免费乱视频| 亚洲第一电影网| 成人午夜视频网站| 精品国产网站在线观看| 亚洲一区二区高清| 99riav一区二区三区| 精品国产伦一区二区三区观看体验| 一区二区视频在线看| 国产美女久久久久| 欧美福利视频导航| 亚洲综合图片区| 成人禁用看黄a在线| 精品国内二区三区| 日韩电影在线观看一区| 91美女片黄在线观看91美女| 国产亚洲综合性久久久影院| 男男gaygay亚洲| 7777女厕盗摄久久久| 亚洲影院在线观看| 91免费在线看| 中文字幕高清一区| 国产69精品久久777的优势| 亚洲精品一区在线观看| 久久精品国产在热久久| 欧美精三区欧美精三区| 亚洲一二三四在线观看| 97久久精品人人爽人人爽蜜臀| 久久精品视频在线看| 国内精品嫩模私拍在线| 久久久亚洲高清| 国产高清视频一区| 久久久精品影视| 国产成人免费视频网站| 欧美高清在线视频|