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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? parser.java

?? 用來為垂直搜索引擎抓取數(shù)據(jù)的采集系統(tǒng)
?? JAVA
字號(hào):
/*
 * *****************************************************
 * Copyright (c) 2005 IIM Lab. All  Rights Reserved.
 * Created by xuehao at 2005-10-12
 * Contact: zxuehao@mail.ustc.edu.cn
 * *****************************************************
 */

package org.indigo.parser;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.httpclient.NameValuePair;
import org.indigo.util.MainConfig;
/**
 * 解析通過URL指定的頁面類。
 * @author wbz
 *
 */

public class Parser
{
    private URL itsUrl=null;
    private HttpURLConnection itsConn = null;
//    private NavigateController itsNav=null;
    private String itsEncoding=null;
    private final String DEFAULT_ENCODING = "gb2312";
    private String itsPageStr=null;
    private boolean IsByPost=false;
    private NameValuePair data[]=null;
    private String itsFormUrl=null;
    private boolean IsByLogin=false;
    private String itsOtherUrl=null;
    
    public Parser()
    {
    }
    /**
     * 此方法通過指定開始和結(jié)束標(biāo)記來獲取有用的信息,這樣可以去掉一些不需要信息的干擾。
     * add by wbz for getting a userful infomation body from a homepage;
     * setItsPageStr 
     * @param startStr
     * @param endStr
     */
    public void setItsPageStr(String startStr, String endStr)
    {
    	itsPageStr=parseWith(startStr, endStr);
    }
   /**
    * 設(shè)置是否需要登錄的參數(shù)。
    * @param IsByLogin
    */
    public void setIsByLogin(boolean IsByLogin)
    {
    	this.IsByLogin=IsByLogin;
    }
    /**
     * 設(shè)置在提交表單時(shí),需要的參數(shù)。
     * @param data
     */
    public void setJSValuePairs(NameValuePair data[])
    {
    	this.data=data;
    }
/**
 * 根據(jù)指定的開始標(biāo)記和結(jié)束標(biāo)記,獲取開始和結(jié)束標(biāo)記中間的內(nèi)容。
 * @param startStr 開始標(biāo)記
 * @param endStr  結(jié)束標(biāo)記
 * @return
 */
    public String parseWith(String startStr, String endStr)
    {
//      System.out.println( itsUrl );
        
        startStr = startStr.trim();
        endStr = endStr.trim();
        String midStr=null;
        int i;
        if( itsPageStr==null )
            return null;
        
        i = itsPageStr.indexOf( startStr );
        if( i==-1 )
            return null;
        itsPageStr = itsPageStr.substring( i+startStr.length() );
        i = itsPageStr.indexOf( endStr );
        if( i==-1 )
            return null;
        midStr = itsPageStr.substring( 0, i );
        
        return midStr;
    }
/**
 * 當(dāng)采集規(guī)則中用到正則表達(dá)式時(shí),需要調(diào)用此方法。
 * 此方法中的前后標(biāo)識(shí)是用正則表達(dá)式表示的。
 * @param startRex  含有正則表達(dá)式的前標(biāo)識(shí)。
 * @param endRex   含有正則表達(dá)式的后標(biāo)識(shí)。
 * @return
 */
    public String parserWithRegex(String startRex,String endRex)
    {
    	Pattern spattern = Pattern.compile(startRex);//("<td align=\"center\" bgcolor=\"[0-9a-fA-F]{6}\">");//\\s*.*([\u4e00-\u9fa5]+)</td>");
	    Pattern bpattern=Pattern.compile(endRex);
    	Matcher m=spattern.matcher(itsPageStr);
    	int s=-1;
    	String midStr=null;
		if(m.find())
		{
//			System.out.println(m.group());
			 s=m.start()+m.group().length();
			 itsPageStr=itsPageStr.substring(s);
			m=bpattern.matcher(itsPageStr);
			
			if(m.find())
			{
			midStr=itsPageStr.substring(0, m.start());//m.group(1);
			itsPageStr=itsPageStr.substring(midStr.length()+m.group().length());
			}
//			System.out.println(midStr);
		}
		return midStr;
    }
/**
 * 設(shè)置在通過提交表單的形式訪問頁面時(shí)需要指定的處理頁面的URL。
 * @param url
 */
    public void setFromUrl(String url)
    {
    	//setUrl(url);
    	itsFormUrl=url;
    }
    /**
     * 設(shè)置需要采集的URL。
     * @param url
     */
    public void setUrl(String url)
    {
    	if(IsByPost)//通過提交的形式訪問頁面時(shí)。
    	{
    		url=url.replaceAll(" ", "");
    		itsFormUrl=url;
    		return;
    		
    	}else if(IsByLogin)//通過登錄的方式訪問頁面時(shí)。
    	{
    		url=url.replace(" ", "");
    		itsOtherUrl=url;
    		return;
    	}
    	url=url.replaceAll(" ", "");
        itsUrl = null;
        /**
         * 和指定的URL建立連接。
         */
        try
        {
            itsUrl = new URL( url );
            itsConn = (HttpURLConnection)itsUrl.openConnection(); 
//            System.out.println( "Parser with: " + url );
        } catch (MalformedURLException e)
        {
            e.printStackTrace();
        }catch (IOException e1)
        {
            e1.printStackTrace();
        }
        return;
    }
    /**
     * 打開指定URL的連接。
     * @return
     */
    public boolean open()
    {
    	if(IsByPost)//當(dāng)通過提交的方式訪問URL時(shí),通過此代碼段獲取源文件。
    		{
    		
    		itsPageStr=Login.getHtmlByPost(itsFormUrl,data);
    		
    		}
    	else if(IsByLogin)//當(dāng)通過登錄的方式訪問URL時(shí),通過此代碼段獲取源文件。
    	{
    		itsPageStr=Login.getHtmlByLogin(itsFormUrl, data, itsOtherUrl);
    	}
    	else//一般情況下,通過下面的代碼段獲取源文件。
        itsPageStr = parseAll();
    	
        if( itsPageStr==null )
            return false;
        
        return true;
    }
    /**
     * 使獲取的源文件置null
     *
     */
    public void close()
    {
        itsPageStr = null;
    }
    
    /**
     * 設(shè)置是否通過提交獲取頁面。
     * @param IsByPost
     */
    public void setIsByPost(boolean IsByPost)
    {
    	this.IsByPost=IsByPost;
    	
    }
    public String OtherParserAll(String classname)
    {
    	
    	return null;
    }
    /**
     * 在一般的情況下,獲取指定頁面的源代碼。
     * @return
     */
    public String parseAll()
    {
        if( itsUrl==null || itsConn==null )
            return null;
        int retryCount=1;
        //當(dāng)指定頁面訪問無法連接時(shí),需要再次嘗試,此參數(shù)是指定重新嘗試次數(shù)。
        String retryStr = MainConfig.getInstance().getProperty("RetryCount");
        
        if( retryStr==null || retryStr.equals("") )
        {
            retryCount = 1;
        }else
            retryCount = Integer.parseInt( retryStr );
        
        
        int m = retryCount;
        
        BufferedReader rd = null;
        int k=0;
        boolean retryFlag = false;
        while( k<retryCount )
        {
	        try
	        {
	            if( itsEncoding==null )
	                itsEncoding = DEFAULT_ENCODING;
	            itsConn.disconnect();
	            
	            itsConn.setRequestProperty("User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows 2000)"); 
	    		itsConn.connect(); //建立連接。
	            //System.out.println( itsConn.getContentEncoding() );
//	    		Map map=itsConn.getHeaderFields();
//	    		Iterator it=map.keySet().iterator();
//	    		while (it.hasNext())
//	    		System.out.println(itsConn.getHeaderField((String)it.next()));
	    		String charset=itsConn.getHeaderField("Content-Type");
	    		int kk=-1;
	    		if(charset!=null&&(kk=charset.indexOf("charset="))!=-1)
	    		{
	    			charset=charset.substring(kk+8);
	    			itsEncoding=charset;
	    		}
	            rd = new BufferedReader( new InputStreamReader( itsConn.getInputStream(), itsEncoding ) );
	            if( rd!=null )
	            {
	                break;
//	                retryCount = 0;
	            }
	        } catch (IOException e)
	        {
	            // TODO Auto-generated catch block
//	            e.printStackTrace();
	            retryFlag = true;
	            retryCount--;
//	            System.out.println("");
	            System.out.println( itsUrl + " [left retry " + retryCount + "]" );
	        }
        }
        if( retryFlag )
        {
            System.out.println( itsUrl + " [ get at retry" + (m-retryCount) + "]" );
        }
        if( rd==null )
        {
            System.out.println( "donot get the page." );
            return null;
        }
        
        String str;
        StringBuffer pageStr=new StringBuffer();
        int i=0;
        try
        {
            while( (str=rd.readLine())!=null )
            {
                i++;
//                System.out.print( "." );
                pageStr.append( str.trim() );
            }
        } catch (IOException e1)
        {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }
//        System.out.println( "\nline=" + i );
        try
        {
            rd.close();
        } catch (IOException e2)
        {
            // TODO Auto-generated catch block
            e2.printStackTrace();
        }
        itsConn.disconnect();//源代碼成功獲取,斷開連接。
        
        itsPageStr = pageStr.toString();
//        System.out.println( itsPageStr );
//        System.out.println( "parse all over" );
        return itsPageStr;
    }
	
	public void setItsEncoding(String itsEncoding) {
		this.itsEncoding = itsEncoding;
	}

}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91啪九色porn原创视频在线观看| 国产真实精品久久二三区| 久久网站最新地址| 欧美一区二区三区视频在线| 日本高清成人免费播放| 成人网页在线观看| 国产精品综合av一区二区国产馆| 午夜精品在线看| 亚洲一区二区精品视频| 亚洲人成网站精品片在线观看| 久久婷婷国产综合精品青草| 精品国产成人在线影院| 欧美一区二区精品| 91超碰这里只有精品国产| 在线观看国产日韩| 亚洲精品中文在线观看| 国产精品女主播av| 中文av一区二区| 国产精品成人一区二区艾草| 国产精品女人毛片| 亚洲激情校园春色| 亚洲国产一区二区三区| 麻豆一区二区三| 狠狠色丁香婷综合久久| 国产成人啪免费观看软件| 成人免费毛片片v| 91论坛在线播放| 欧美日韩成人综合| 欧美变态口味重另类| 国产三级欧美三级| 亚洲色图视频网站| 亚洲一区精品在线| 激情欧美一区二区| 91蜜桃在线免费视频| 日韩精品专区在线影院观看| 国产欧美一区二区精品性色超碰| 国产精品每日更新在线播放网址| 亚洲黄色免费网站| 理论电影国产精品| 91在线云播放| 精品国产一区a| 亚洲一区二区偷拍精品| 精品在线观看免费| 欧洲精品一区二区| 国产精品灌醉下药二区| 日韩不卡一二三区| 日本韩国一区二区| 国产精品剧情在线亚洲| 久久9热精品视频| 欧美精品 日韩| 一区二区三区在线观看国产| 国产精品123区| 日韩欧美精品在线| 91碰在线视频| 一区精品在线播放| 成人黄色一级视频| 国产精品美女久久久久久久| 国产一区二区视频在线| 日韩欧美第一区| 久久成人久久鬼色| 久久先锋影音av鲁色资源网| 蜜桃视频在线观看一区| 在线观看91av| 午夜精品久久久久影视| 欧美三级乱人伦电影| 午夜电影网亚洲视频| 日韩免费视频一区| 久久99国产精品免费网站| 久久伊99综合婷婷久久伊| 国产精品一区二区黑丝| 欧美极品美女视频| 一本一道久久a久久精品综合蜜臀| 国产精品天干天干在观线| 99国产精品国产精品久久| 亚洲精品成人精品456| 在线播放中文字幕一区| 国产米奇在线777精品观看| 亚洲国产精品成人综合| 一本色道综合亚洲| 麻豆免费精品视频| 国产精品久久久久婷婷| 欧美亚洲国产bt| 精品无人区卡一卡二卡三乱码免费卡| 久久九九99视频| 在线观看免费亚洲| 国产一区二区美女诱惑| 亚洲欧美日韩国产手机在线| 欧美一区二区三区日韩| 99精品久久只有精品| 日本强好片久久久久久aaa| 国产欧美日韩在线观看| 欧美日韩国产首页| www.亚洲色图| 国产另类ts人妖一区二区| 偷拍日韩校园综合在线| 久久国产精品免费| 午夜影视日本亚洲欧洲精品| 国产精品美女久久久久aⅴ| 欧美一级电影网站| 91黄视频在线观看| 99久久99久久精品国产片果冻| 韩国av一区二区| 欧美aaaaaa午夜精品| 亚洲三级在线看| 久久久久久久久久久久电影| 中文字幕一区二区不卡| 欧美精品一区二区三区高清aⅴ| 91久久精品日日躁夜夜躁欧美| 国产精品资源在线| 黑人巨大精品欧美黑白配亚洲| 亚洲成人精品影院| 亚洲精品成人天堂一二三| 中文字幕日韩一区二区| 国产视频911| 久久精品人人做| 日韩精品一区二区三区视频在线观看 | 亚洲综合激情另类小说区| 亚洲啪啪综合av一区二区三区| 国产亚洲美州欧州综合国| 久久久欧美精品sm网站| 国产亚洲欧美色| 久久久91精品国产一区二区精品| 精品国产乱码久久久久久夜甘婷婷| 日韩欧美国产系列| 久久久精品日韩欧美| 国产精品久久影院| 亚洲男女一区二区三区| 夜夜揉揉日日人人青青一国产精品| 亚洲图片欧美综合| 激情深爱一区二区| 成a人片亚洲日本久久| 91精彩视频在线观看| 欧美一区二区成人| 日本大香伊一区二区三区| 欧美一区二区三区日韩视频| 精品久久人人做人人爱| 国产精品无人区| 午夜精品久久久久久久99樱桃| 秋霞成人午夜伦在线观看| 国产精品99久久不卡二区| 欧美视频一区二区三区四区| 日韩免费一区二区| 综合色天天鬼久久鬼色| 日韩av网站免费在线| a级精品国产片在线观看| 欧美精品tushy高清| 国产精品久久久久久妇女6080| 亚洲国产一区视频| 成人国产精品免费| 欧美变态凌虐bdsm| 丝袜美腿亚洲一区| 色综合久久久久| 国产精品成人免费在线| 韩国精品久久久| 91精品免费在线| 伊人婷婷欧美激情| 国产传媒一区在线| 精品日韩在线观看| 青青草国产精品亚洲专区无| 在线观看欧美日本| 亚洲综合免费观看高清完整版 | 免费人成在线不卡| 3atv一区二区三区| 日韩成人一级片| 91精品国产综合久久国产大片 | 1024成人网色www| 成人app在线观看| 亚洲欧美电影一区二区| 91在线云播放| 亚洲黄色免费电影| 欧美日韩亚洲丝袜制服| 亚洲成人免费看| 日韩一区二区三区电影在线观看 | 99这里只有精品| 亚洲欧美日韩国产成人精品影院 | 久久精品国产**网站演员| 日韩亚洲欧美中文三级| 久久精品国产**网站演员| 精品国一区二区三区| 国内精品视频666| 国产日韩欧美一区二区三区综合| 国产成人精品网址| 亚洲国产成人高清精品| 欧美一区二区三区电影| 国产综合色产在线精品| 国产精品午夜电影| 欧美日韩卡一卡二| 狠狠狠色丁香婷婷综合激情| 国产精品美女久久久久aⅴ| 欧洲日韩一区二区三区| 激情小说欧美图片| 亚洲欧美日韩电影| 日韩免费高清视频| 91热门视频在线观看| 蜜臀a∨国产成人精品| 亚洲视频一区二区免费在线观看| 欧美日韩精品欧美日韩精品| 高清av一区二区| 奇米一区二区三区| 一区二区三区在线视频免费观看 |