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

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

?? itemparser.java

?? 用來為垂直搜索引擎抓取數據的采集系統
?? JAVA
字號:
/*
 * *****************************************************
 * 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.util.ArrayList;
import java.util.Hashtable;
import java.util.List;

import org.apache.commons.httpclient.NameValuePair;
import org.indigo.filters.FiltEnter;
import org.indigo.filters.FiltFirstColon;
import org.indigo.filters.FiltFrontBack;
import org.indigo.filters.FiltGtLt;
import org.indigo.filters.FiltSpace;
import org.indigo.filters.FiltUntil;
import org.indigo.filters.Filter;

import org.indigo.xml.FiltPair;
/**
 * 此類主要完成對所采集到的一條數據的封裝。
 * @author wbz
 *
 */
public class ItemParser
{
    protected ArrayList itsPairs=null;
    private boolean itsFilterFlag=true;
    private String itsUrl;
    public static final String GAP_TOKEN="`";
    private Parser itsParser=null;
    private Filter [] filters = null;    
    private String emailUrl="http://www.damabang.com/buyandsale/";
    public  int errorMark=0;
    public  String errorField=null;
    public boolean IsByPost=false;
    public String formUrl;
    public NameValuePair data[]=null;
    private Hashtable<String, String> defaultValue=null;
    /**
     * 無參構造函數,主要完成對于一條數據中的每個數據項的過濾。
     *
     */
    public ItemParser()
    {
        filters = new Filter[6];
        filters[0] = new FiltUntil( ">" );
        filters[1] = new FiltFrontBack();
        filters[2] = new FiltSpace();
        filters[3] = new FiltEnter();
        filters[4] = new FiltFirstColon();
        filters[5] = new FiltGtLt();
        defaultValue=new Hashtable<String, String>();
    }
    public ItemParser(String s)
    {
    	
    }
/**
 * 當采集時需要動態默認值時,用到此方法。
 * @param name
 * @param value
 */
    public void setDefaultValue(String name,String value)
    {
    	defaultValue.put(name, value);
    }
    /**
     * 清除存放在table中所有值。
     *
     */
    public void clearTable()
    {
    	defaultValue.clear();
    }
    /**
     * 設置解析器。
     * @param parser
     */
    public void setParser( Parser parser )
    {
        itsParser = parser;
    }
    /**
     * 設置是否需要登陸。
     * @param IsByLogin
     */
    public void setIsByLogin(boolean IsByLogin)
    {
    	itsParser.setIsByLogin(IsByLogin);
    	
    }
    /**
     * 設置是否通過post方法登陸。
     * @param IsByPost
     */
    public void setIsByPost(boolean IsByPost)
    {
    	itsParser.setIsByPost(IsByPost);
    }
    /**
     * 當采集中遇到js時,可以通過此方法設置參數值。
     * @param data
     */
    public void setValuePair(NameValuePair data[])
    {
    	itsParser.setJSValuePairs(data);
    }
    public void setEncoding(String encoding)
    {
        return;
    }
    /**
     * add by wbz for useful information;
     * @param startStr
     * @param endStr
     */
    /**
     * 設置采集的前后標識字符串。
     */
    public void setItsPageStr(String startStr, String endStr)
    {
    	itsParser.setItsPageStr(startStr, endStr);
    }
    /**
     * 當需要登陸或采集中遇到表單時,設置處理頁面。
     * @param url
     */
    public void setFromUrl(String url)
    {
    	formUrl=url;
    	itsParser.setFromUrl(url);
    }
    /**
     * 設置采集頁面的URL。
     * @param url
     */
    public void setUrl( String url )
    {
        itsUrl = url;
        itsParser.setUrl( url );
    }
    /**
     * 此方法完成了主要的采集工作,
     * 首先是讀取采集規則,然后把采集規則應用到實際的網頁源代碼中,抽取其中的信息。
     * @return
     */
    public String getAItem()
    {
        int sz=itsPairs.size();
        String str = "", startStr, endStr, tmpstr=null,isRegex=null,defaultValue=null;
        String isVarDef=null;
        String varDefName=null;
        
        int p;
        FiltPair pair=null;
        FiltPair temp=null;
        int parent=-1;
        int iii=-1;
        for( int i=0; i<sz; i++ )
        {
        	 pair = (FiltPair) itsPairs.get( i );
        	 p=pair.getPp();
        	 if(p!=-1)
        	 {
        		 parent=p;
        		 iii=i;
        	 }
        }
        /**
         * 循環讀取抽取規則,根據抽取規則的前后標識提取中間信息。
         */
        for( int i=0; i<sz; i++ )
        {
            pair = (FiltPair) itsPairs.get( i );
            startStr = pair.getStart();
            endStr = pair.getEnd();
            isRegex=pair.getIsRegex();
            defaultValue=pair.getDefaultValue();
            varDefName=pair.getVarDefaultName();
            isVarDef=pair.getIsVarDefault();
            p=pair.getPp();
            if(i==iii)
            	continue;
            /**
             * modified by wbz for Regex;
             */
            if(isRegex!=null&&isRegex.trim().equals("true"))
            	tmpstr=itsParser.parserWithRegex(startStr, endStr);//當采集規則中用到正則表達式時。
            else if(isVarDef!=null&&isVarDef.trim().equalsIgnoreCase("true"))//當采集時需要動態默認值時。
            {
            	tmpstr=this.defaultValue.get(varDefName);
            	if(tmpstr==null)
            		{
            		tmpstr=itsParser.parseWith(startStr, endStr);
            		this.defaultValue.put(varDefName, tmpstr);
            		}
            	//this.defaultValue.remove(varDefaultValue);
            }
            else// added by wbz for defaultValue;當采集中用到靜態默認值時。
            {
            	
            	if(defaultValue==null)
               tmpstr = itsParser.parseWith( startStr, endStr );
            	else
            		{
            		if(defaultValue.indexOf("###")!=-1)
            		{
            			tmpstr = itsParser.parseWith( startStr, endStr );
            			if(tmpstr!=null)
            			tmpstr=defaultValue.replaceAll("###", tmpstr);
            			
            		}else
            			tmpstr=defaultValue;
            		
            		}
            
            }
//             if(p==-1&&parent==i)
//            {
//            	temp = (FiltPair) itsPairs.get( iii );
//            }
            
            if( tmpstr==null&&p==-1 )//判斷采集時是否遇到錯誤。
            {
            	if(errorMark>=0&&errorMark<sz)//判斷出錯位置。
            	{
            		errorField=startStr+" and "+endStr+" 出錯";
            	    errorMark=i+1;
            	 
            	}
                return null;
                
            }
            
            String backup=null;
            backup = tmpstr;
            String email=null;
/**
 * modified by wbz
 * 當需要進入第三級鏈接時,執行下面的語句。
 * 從第三級頁面中獲得所需信息。
 */          
            if( p==-1&&parent==i)
            {
            	temp = (FiltPair) itsPairs.get( iii );
                String begin,end;
                begin = temp.getStart();
                end =temp.getEnd(); 
                int ii,jj;
                ii = tmpstr.indexOf( begin );
                jj = tmpstr.indexOf( end, ii+begin.length() );
                String thirdurl = null;
                thirdurl = tmpstr.substring( ii+begin.length(), jj );
                
                
                thirdurl = emailUrl + thirdurl;
//                System.out.println( thirdurl );
                Parser parser = new Parser();
                parser.setUrl( thirdurl );
                String pageStr = null;
//                parser.open();
                
                pageStr = parser.parseAll();
                String beginemail, endemail;
                beginemail =temp.getPair().getItsStart();
                endemail = temp.getPair().getItsEnd();
                
                email = parser.parseWith( beginemail, endemail );
//                System.out.println( email );
                tmpstr = email;
                
                if( itsFilterFlag &&tmpstr!=null)
                	tmpstr = filt( tmpstr );
//                ii = str.lastIndexOf( "`", str.length() );
//                ii = str.lastIndexOf( "`", ii-1 );
//                str = str.substring( 0, ii );
//                str += ItemParser.GAP_TOKEN;
              
 //               str += ItemParser.GAP_TOKEN;
            }
            tmpstr = backup;
            tmpstr.replaceAll("`", "");
            if( itsFilterFlag )//過濾一些標簽。
            	tmpstr = filt( tmpstr );
            
            str += tmpstr.trim();
            
            if(email!=null)
            {str += ItemParser.GAP_TOKEN;
            	  str += email;}
            str += ItemParser.GAP_TOKEN;
        }
        //把采集到的每個字段組成字符串通過`分隔。
        str = str.substring( 0, str.length()-1 );
        str = str.trim()+ItemParser.GAP_TOKEN+itsUrl;
//        System.out.println( str );
        return str;
    }
/**
 * 設置此次任務的采集規則。
 * @param list
 */
    public void setPairList( ArrayList list )
    {
        itsPairs = list;
    }
/**
 * 打開和指定頁面的鏈接。
 * @return
 */
    public boolean open()
    {
        return itsParser.open();
    }
    /**
     * 關閉和指定頁面建立的流。
     *
     */
    public void close()
    {
        itsParser.close();
    }
    /**
     * 把指定的字符串過濾。
     * @param str
     * @return
     */
    public String filt( String str )
    {
        int tmpsz,j;
        tmpsz = filters.length;
        for( j=0; j<tmpsz; j++ )
            str = filters[j].filt( str );
        return str;
    }
    /**
     * 設置是否需要過濾參數。
     * @param f
     */
	public void setFilterFlag(boolean f) 
	{
    	itsFilterFlag = f;
	}
// add by wbz
	/**
	 * 獲取錯誤標記。
	 */
	public int getErrorMark() {
		return errorMark;
	}
//	 add by wbz
	/**
	 * 獲取錯誤字段。
	 */
	public String getErrorField() {
		return errorField;
	}
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩免费高清av| 蜜臀精品一区二区三区在线观看 | 亚洲成人自拍一区| 国内成人自拍视频| 欧美午夜片在线观看| 久久综合九色综合97婷婷| 一区二区三区在线观看视频| 国产精品夜夜嗨| 欧美精品一级二级| 亚洲日本一区二区三区| 精品一区二区三区蜜桃| 欧美精品 国产精品| 亚洲免费在线播放| 风间由美一区二区av101 | 91色porny蝌蚪| 国产日韩欧美在线一区| 五月天亚洲精品| 精品视频一区二区三区免费| 中文字幕字幕中文在线中不卡视频| 理论片日本一区| 欧美片网站yy| 亚洲h精品动漫在线观看| av电影一区二区| 国产三级精品三级| 国产一区二区看久久| 欧美一级久久久久久久大片| 香蕉成人啪国产精品视频综合网| 99国产精品久久久久| 国产精品青草久久| 成人黄色电影在线| 成人av影视在线观看| 国产精品亚洲人在线观看| 天堂一区二区在线| 成人免费视频在线观看| 国产欧美综合色| 国产精品久久久久精k8| 久久久久久麻豆| 久久久久亚洲蜜桃| 国产女人18毛片水真多成人如厕| 欧美一区二区三区不卡| 日韩一区二区中文字幕| 国产精品久久一卡二卡| 成人动漫中文字幕| 国产精品成人网| 色女孩综合影院| 亚洲三级理论片| 91免费小视频| 亚洲一区二区三区在线看| 欧美日本在线视频| 日本在线播放一区二区三区| 精品少妇一区二区三区视频免付费| 国产原创一区二区三区| 日本一二三四高清不卡| 色噜噜狠狠成人网p站| 亚洲午夜精品网| 日韩欧美一区中文| 从欧美一区二区三区| 一区二区欧美精品| 欧美精品久久天天躁| 国产综合久久久久影院| 国产精品国产三级国产a| 91社区在线播放| 日本视频免费一区| 国产三级欧美三级| 在线精品视频免费播放| 精品一区二区综合| 国产精品国产三级国产aⅴ原创 | 国产一区二区不卡| 亚洲免费在线观看| 欧美一级黄色录像| 成人午夜免费av| 午夜精品福利一区二区三区蜜桃| 欧美mv日韩mv| 欧美午夜影院一区| 国产精品18久久久久久久久| 亚洲一区二区在线播放相泽| 久久久另类综合| 欧美人与禽zozo性伦| 国产成人免费在线| 日韩不卡在线观看日韩不卡视频| 国产清纯白嫩初高生在线观看91| 欧美午夜在线一二页| 粉嫩欧美一区二区三区高清影视| 亚州成人在线电影| 亚洲婷婷在线视频| 久久久夜色精品亚洲| 欧美日韩亚洲综合一区| 成人短视频下载| 美女视频黄 久久| 亚洲午夜精品在线| 亚洲三级免费观看| 国产精品免费网站在线观看| 精品久久一区二区三区| 欧美情侣在线播放| 在线免费一区三区| 成人国产在线观看| 国产成人av一区| 另类专区欧美蜜桃臀第一页| 午夜精品久久久久久久久久久| 一区免费观看视频| 国产欧美日韩精品在线| 欧美mv日韩mv国产网站app| 9191精品国产综合久久久久久| 99久久99久久久精品齐齐| 粉嫩av一区二区三区粉嫩| 精品一区二区在线播放| 美洲天堂一区二卡三卡四卡视频| 亚洲一区二区视频| 亚洲午夜在线观看视频在线| 一区二区三区在线视频免费观看 | 国产老妇另类xxxxx| 蜜桃精品视频在线观看| 日本va欧美va欧美va精品| 丝袜脚交一区二区| 五月天激情综合| 午夜成人免费视频| 日韩高清在线电影| 石原莉奈一区二区三区在线观看| 亚洲第一在线综合网站| 视频在线观看国产精品| 毛片av一区二区| 精品一区二区三区日韩| 国产揄拍国内精品对白| 国产一区二区三区日韩| 国产成人免费av在线| zzijzzij亚洲日本少妇熟睡| thepron国产精品| 色婷婷av一区| 欧美日韩精品高清| 91精品国产色综合久久| 欧美成人女星排名| 国产人成亚洲第一网站在线播放| 国产精品美女久久久久久久久| 中文字幕在线免费不卡| 一级中文字幕一区二区| 香蕉成人伊视频在线观看| 久久aⅴ国产欧美74aaa| 国产成人av网站| 欧美在线观看禁18| 精品福利av导航| 亚洲欧美综合网| 香蕉加勒比综合久久| 国产精品1区2区| 色久优优欧美色久优优| 在线综合亚洲欧美在线视频| 久久午夜老司机| 伊人开心综合网| 日本三级亚洲精品| 丁香激情综合国产| 欧美探花视频资源| 久久你懂得1024| 亚洲福利一二三区| 国产精品一二三四| 欧美三级电影一区| 久久九九久久九九| 亚洲成国产人片在线观看| 国产精品自在欧美一区| 欧美婷婷六月丁香综合色| 精品999在线播放| 夜夜夜精品看看| 韩国欧美国产一区| 欧美色图第一页| 国产欧美日韩在线| 免费成人在线网站| 91色综合久久久久婷婷| 久久久久久久久久久99999| 亚洲国产精品一区二区www在线| 国产在线精品一区二区三区不卡| 91视频在线观看免费| 精品91自产拍在线观看一区| 亚洲午夜电影网| 成人av网站在线| 久久综合色8888| 日韩二区在线观看| 欧美在线一二三| 中文一区二区在线观看| 蜜桃一区二区三区在线| 欧美日韩一本到| 亚洲嫩草精品久久| 成人高清伦理免费影院在线观看| 欧美一区二区三区在线观看视频| 亚洲免费观看在线视频| 丁香一区二区三区| 久久综合久久鬼色| 另类专区欧美蜜桃臀第一页| 欧美日韩高清一区| 亚洲综合自拍偷拍| 99精品视频一区二区| 国产精品视频看| 国产精品一区在线| 久久久久久**毛片大全| 蜜桃视频在线观看一区| 91精品国产91热久久久做人人| 亚洲精品免费在线| 91久久精品网| 亚洲一区二区成人在线观看| 色美美综合视频| 亚洲黄色性网站| 欧美系列日韩一区| 视频一区二区不卡|