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

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

?? spider.java

?? lucene 是java 的版的搜索引擎公共模塊
?? JAVA
?? 第 1 頁 / 共 2 頁
字號:
package com.microvois.luence;


import cvu.html.HTMLTokenizer;
import cvu.html.TagToken;
import cvu.html.TextToken;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Enumeration;
import java.net.URL;
import java.net.HttpURLConnection;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.StringReader;
import java.io.FileNotFoundException;
import java.security.Security;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
import org.apache.commons.httpclient.methods.GetMethod;
import org.mozilla.intl.chardet.HtmlCharsetDetector;
import org.mozilla.intl.chardet.nsDetector;
import org.mozilla.intl.chardet.nsICharsetDetectionObserver;
import java.io.*;

import com.microvois.luence.inputproxy;


public class Spider implements Runnable {

	private static String lineSep = System.getProperty("line.separator");

	private String indexDir;

	private ArrayList urls;

	private ArrayList include;

	private ArrayList exclude;

	private ArrayList threadList;

	private boolean verbose;

	private boolean incremental;

	private boolean groksHTTPS;


	private HashMap indexedURLs;

	private HashMap mimeTypes;

	private int threads;

	private int descSize;
	private int nInputcount = 0;

	private int bytes;
	 private HttpClient httpclient;
     
	 private boolean isloopget = false;
	 private String mainargs[] = null;
	/** 
	 * 是否全站分析入庫。 
	 * 
	 * @param bvalue
	 */
	public void setLoopSpider(boolean bvalue)
	{
		 this.isloopget = bvalue;		
	}
	
	
	
	public void spiderURL(String url) throws Exception 
	{
			inputproxy.flush();
			urls.add(url);
			indexDir= Config.StrDataDirectroy;
				
			if (urls.size() == 0)
				throw new IllegalArgumentException(
						"缺少需要的URL");
			if (indexDir == null)
				throw new IllegalArgumentException(
						"Missing required argument: -d [index dir]");
			
			if (mimeTypes.size() == 0) {
				// add default MIME types
				mimeTypes.put("text/html", Boolean.TRUE);
				mimeTypes.put("text/plain", Boolean.TRUE);
			}
			
			go();

			//inputproxy.flush();
	}
	 

	public Spider() 
	{
		this(null);
	}
	
	public Spider(String argv[]) {
		groksHTTPS = true;
		verbose = false;
		incremental = false;
		threads = 1;
		descSize = 1024;
		bytes = 0;
		include = new ArrayList();
		exclude = new ArrayList();
		urls = new ArrayList();
		threadList = new ArrayList();
		indexedURLs = new HashMap();
		mimeTypes = new HashMap();
		mainargs= argv;
		if(argv !=null)
		parseArgs(argv);
		httpclient = new HttpClient(new MultiThreadedHttpConnectionManager());
		httpclient.getHttpConnectionManager().
               getParams().setConnectionTimeout(30000);
		

	}

	public void go() throws Exception {
		// create the index directory -- or append to existing
		if (verbose) {
			print("Creating index in: " + indexDir);
			if (incremental)
				print("    - using incremental mode");
		}
		
		

		// index each entry point URL
		long start = System.currentTimeMillis();
		for (int i = 0; i < threads; i++) {
			Thread t = new Thread(this, "Spindle Spider Thread #" + (i + 1));
			t.start();
			threadList.add(t);
		}
		
		if(mainargs !=null)
		{
			while (threadList.size() > 0)
			{
				Thread child = (Thread) threadList.remove(0);
				child.join();
			}
			long elapsed = System.currentTimeMillis() - start;
	
			// save the index
			
				print("Indexed " + indexedURLs.size() + " URLs (" + (bytes / 1024)
						+ " KB) in " + (elapsed / 1000) + " seconds");
		}
		
		}

	public void run() {
		String url;
		try {
			while ((url = dequeueURL()) != null) {
				indexURL(url);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		inputproxy.flush();
		threads--;
	}

	public synchronized String dequeueURL() throws Exception {
		while (true) {
			if (urls.size() > 0) {
				return (String) urls.remove(0);
			} else {
				threads--;
				if (threads > 0) {
					wait();
					threads++;
				} else {
					notifyAll();
					return null;
				}
			}
		}
	}

	public synchronized void enqueueURL(String url) {
		if (indexedURLs.get(url) == null) {
			urls.add(url);
			indexedURLs.put(url, Boolean.TRUE);
			notifyAll();
		}
	}

	private void indexURL(String url) throws Exception {
		if (verbose)
			print("  " + Thread.currentThread().getName() + ": Adding URL: "
					+ url);
		int nloopcount = 3;
		int i=0;
		URLSummary summary =null;
		while(summary==null && i < nloopcount )
		{
		 summary = loadURL(url);
		 i++;		
		}
		if (summary != null && summary.body != null) 
		{
			String urls[] = parseURLs(summary);
			System.out.println(summary.toString());
			synchronized (this) 
			{
				bytes += summary.body.length();
				if(inputproxy.inputData(summary.title,summary.desc , url))
				{
					System.out.println(url+" input search engine sucess ...");
				}
				else
					System.out.println(url+" input search engine failed ...");
				if(nInputcount % 100 ==0 && nInputcount !=0)
					inputproxy.flush();
				
			}

			for ( i = 0; i < urls.length; i++)
			{
				// check against the include/exclude list
				boolean add = true;
				for (int x = 0; add && x < include.size(); x++) {
					String inc = (String) include.get(x);
					add = (urls[i].indexOf(inc) != -1);
				}
				for (int x = 0; add && x < exclude.size(); x++) {
					String ex = (String) exclude.get(x);
					add = (urls[i].indexOf(ex) == -1);
				}

				if (add) {
					enqueueURL(urls[i]);
				}
			}
		}
	}

	
	// 解析頁面中的內容 。。。。。
	private String[] parseURLs(URLSummary summary) throws Exception {
		StringBuffer desc = new StringBuffer();
		ArrayList urls = new ArrayList();
		boolean isIgnoreText = false;
		HTMLTokenizer ht = new HTMLTokenizer(new StringReader(summary.body));
		for (Enumeration e = ht.getTokens(); e.hasMoreElements();) {
			Object obj = e.nextElement();
			if (obj instanceof TagToken) {
				TagToken tag = (TagToken) obj;
				String tagName = tag.getName().toLowerCase();
				//System.out.println("tag="+tag.toString()+"::"+tagName);
				String url = null;
				
				if(tagName.equals("meta") )
				{
					// 將keywords , description 加入到關鍵字中。 
					//System.out.println(tag.getAttribute("name")+"::"+ tag.getAttribute("content"));
					
					if(tag.getAttribute("name")!=null && "keywords".equalsIgnoreCase(tag.getAttribute("name")) && tag.getAttribute("content") !=null)
					{
						desc.append(tag.getAttribute("content"));
					}
					else if(tag.getAttribute("name")!=null && "description".equalsIgnoreCase(tag.getAttribute("name")) && tag.getAttribute("content") !=null)
					{
						desc.append(tag.getAttribute("content"));
					}
					
				}
				
				//過濾到script 里的內容, style
				
					if(tag.isEndTag()==false &&  tagName.equals("style"))
						isIgnoreText= true;
					else if(tag.isEndTag()==true &&  tagName.equals("style"))
					{
						isIgnoreText = false;
					}
					
				if(tag.isEndTag()==false &&  tagName.equals("script"))
					isIgnoreText= true;
				else if(tag.isEndTag()==true &&  tagName.equals("script"))
				{
					isIgnoreText = false;
				}
				else if (tagName.equals("a")) 
				{
					url = tag.getAttributes().get("href");
				} 
				else if (tagName.equals("frame")) 
				{
					url = tag.getAttributes().get("src");
				} 
				else if (tagName.equals("title") && e.hasMoreElements()
						&& !tag.isEndTag()) 
				{
					obj = e.nextElement();
					if (obj instanceof TextToken) {
						TextToken title = (TextToken) obj;
						summary.title = title.getText();

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一卡二卡三卡四卡| 99精品欧美一区二区蜜桃免费| 欧美精品1区2区3区| 亚洲成人av电影在线| 欧美日韩另类一区| 水蜜桃久久夜色精品一区的特点| 欧美日韩国产小视频在线观看| 亚洲午夜羞羞片| 欧美一级久久久| 国产成人精品一区二| 亚洲欧美一区二区久久| 欧洲国内综合视频| 免费成人小视频| 国产区在线观看成人精品| eeuss鲁片一区二区三区在线观看| 亚洲女人****多毛耸耸8| 欧美久久免费观看| 久久99精品久久久久久动态图| 国产午夜精品一区二区三区视频 | 91精品国产一区二区三区| 日产欧产美韩系列久久99| 精品国产三级a在线观看| 国产成人精品三级麻豆| 亚洲最大成人网4388xx| 日韩亚洲欧美成人一区| 大陆成人av片| 午夜精品免费在线| 久久综合九色综合欧美就去吻 | www..com久久爱| 亚洲国产精品久久艾草纯爱| 久久天堂av综合合色蜜桃网| 91麻豆精品在线观看| 日韩国产精品大片| 中文字幕中文乱码欧美一区二区| 欧美日韩国产中文| 国产成人在线网站| 日韩精品一级二级| 亚洲日穴在线视频| 精品国产一区二区精华| 欧美影院精品一区| 成人美女视频在线看| 天天综合天天做天天综合| 国产女人18毛片水真多成人如厕 | 亚洲乱码日产精品bd| 精品国产一区二区亚洲人成毛片 | 国产91富婆露脸刺激对白| 亚洲综合视频在线观看| 久久精品欧美日韩精品| 91精品国产全国免费观看| 91色视频在线| 国产一区亚洲一区| 三级精品在线观看| 亚洲免费在线视频一区 二区| 26uuu精品一区二区在线观看| 精品视频在线看| 成人18精品视频| 国产精品1区二区.| 狠狠色狠狠色综合| 男男视频亚洲欧美| 丝袜a∨在线一区二区三区不卡| 国产精品不卡一区| 中文字幕国产精品一区二区| 久久久久久久久久久电影| 欧美电影免费观看高清完整版在线| 91久久国产最好的精华液| 成人av在线一区二区三区| 极品尤物av久久免费看| 久久疯狂做爰流白浆xx| 日韩中文字幕亚洲一区二区va在线 | 成人午夜激情影院| 国产经典欧美精品| 国产一区二区精品久久| 久久99九九99精品| 经典三级在线一区| 国内精品国产三级国产a久久| 蜜桃一区二区三区在线| 91一区二区在线| 日韩激情视频网站| 午夜精品一区二区三区电影天堂| 樱花草国产18久久久久| 亚洲人成精品久久久久久 | 日韩欧美三级在线| 欧美一区日本一区韩国一区| 欧美日韩www| 欧美浪妇xxxx高跟鞋交| 欧美日韩dvd在线观看| 欧美日韩国产电影| 日韩欧美一区二区不卡| 日韩一区二区三区视频在线| 日韩欧美一级二级三级久久久| 日韩欧美你懂的| 欧美大黄免费观看| 久久久国际精品| 国产精品久久久久久久岛一牛影视 | 中文久久乱码一区二区| 最近日韩中文字幕| 亚洲国产欧美在线人成| 日韩国产精品久久久久久亚洲| 美国十次综合导航| 国产99久久久精品| 欧美精品一区二区三区四区| 国产视频亚洲色图| 亚洲欧美成人一区二区三区| 午夜精品福利一区二区蜜股av| 日韩专区一卡二卡| 国产精品自拍在线| 色欧美88888久久久久久影院| 欧美日韩中字一区| 欧美一卡二卡在线观看| 国产亚洲va综合人人澡精品| 18涩涩午夜精品.www| 午夜亚洲福利老司机| 老司机免费视频一区二区| 岛国av在线一区| 欧美日韩一区不卡| 国产午夜一区二区三区| 亚洲免费高清视频在线| 免费观看在线综合色| 波多野结衣欧美| 这里只有精品视频在线观看| 久久免费精品国产久精品久久久久 | 国产精品乱码一区二三区小蝌蚪| 亚洲男同1069视频| 麻豆精品一区二区综合av| 99麻豆久久久国产精品免费| 欧美精品18+| 亚洲国产高清aⅴ视频| 亚洲成人综合网站| 国产风韵犹存在线视精品| 欧美日韩一区二区三区不卡| 国产亚洲欧美日韩俺去了| 尤物在线观看一区| 国产大陆a不卡| 91精品国产一区二区三区蜜臀 | 亚洲一二三区视频在线观看| 国产精品夜夜爽| 欧美日韩视频在线第一区| 国产欧美精品一区二区色综合| 亚洲高清免费观看| 成人av手机在线观看| 日韩欧美国产综合一区 | 中文无字幕一区二区三区 | 亚洲激情六月丁香| 国产精品伊人色| 欧美猛男超大videosgay| 国产精品久久久久aaaa樱花| 精品一区二区三区在线播放视频| 在线观看视频91| 国产精品每日更新在线播放网址| 久久精品国产久精国产| 欧美三级乱人伦电影| 亚洲视频每日更新| 高清在线不卡av| 久久五月婷婷丁香社区| 久久精品免费观看| 欧美一区二区三区思思人| 亚洲国产成人精品视频| 欧洲精品一区二区| 亚洲欧美日韩电影| 99国产精品久久久久久久久久久| 久久精品日产第一区二区三区高清版 | 日韩va亚洲va欧美va久久| 色综合久久久久久久久久久| 国产精品色眯眯| 日产精品久久久久久久性色| 国产老妇另类xxxxx| 日韩一级片网站| 日韩精品一二三四| 91麻豆精品国产91久久久使用方法| 亚洲综合一区在线| 欧美亚洲动漫精品| 午夜视频一区二区| 欧美性色综合网| 五月天精品一区二区三区| 欧美三级欧美一级| 五月天一区二区三区| 欧美久久久久免费| 男女性色大片免费观看一区二区| 4438成人网| 蜜桃av一区二区三区| 26uuu久久综合| 国产91在线看| 亚洲欧洲国产专区| 在线日韩av片| 三级一区在线视频先锋 | 日韩欧美国产三级电影视频| 久久国产欧美日韩精品| 久久久精品人体av艺术| 成人综合在线网站| 亚洲精品国产无套在线观| 欧美性生活一区| 麻豆91精品视频| 国产亚洲精品福利| 色综合天天综合给合国产| 亚洲综合一二三区| 欧美日本乱大交xxxxx| 国产欧美日韩三级| 波多野结衣视频一区| 亚洲国产裸拍裸体视频在线观看乱了| 欧美美女视频在线观看|