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

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

?? spider.java

?? Java游戲高級編程!!很不錯的!!!Java游戲高級編程!!很不錯的
?? JAVA
字號:
     package com.croftsoft.apps.spider;     import java.io.*;     import java.net.*;     import java.util.*;     import javax.swing.text.MutableAttributeSet;     import javax.swing.text.html.HTML;     import javax.swing.text.html.HTMLEditorKit;     import javax.swing.text.html.parser.DocumentParser;     import javax.swing.text.html.parser.DTD;     import com.croftsoft.core.lang.NullArgumentException;     import com.croftsoft.core.lang.lifecycle.Lifecycle;     import com.croftsoft.core.role.Consumer;     import com.croftsoft.core.role.Filter;     /*********************************************************************     * Web spider.     *      * @version     *   2003-04-09     * @since     *   2003-04-09     * @author     *   <a href="http://www.croftsoft.com/">David Wallace Croft</a>     *********************************************************************/     public final class  Spider       implements Lifecycle     //////////////////////////////////////////////////////////////////////     //////////////////////////////////////////////////////////////////////     {     private static final String  THREAD_NAME    = "Spider";     private static final long    DOWNLOAD_DELAY = 1000;     //     private final Consumer  urlConsumer;     private final Stack     stack;     private final Set       knownSet;     private final HTMLEditorKit.ParserCallback  parserCallback;     //     private Filter   urlFilter;     private Filter   contentTypeFilter;     private Thread   thread;     private boolean  stopRequested;     private URL      currentURL;     //////////////////////////////////////////////////////////////////////     //////////////////////////////////////////////////////////////////////     public static void  main ( String [ ]  args )       throws Exception     //////////////////////////////////////////////////////////////////////     {       Spider  spider = new Spider (         new Consumer ( )         {           public void  consume ( Object  o )           {             System.out.println ( o );           }         } );       SpiderUrlFilter  spiderUrlFilter = new SpiderUrlFilter ( spider );       spiderUrlFilter.setSameHostOnly ( true );       spiderUrlFilter.setSamePortOnly ( true );       spider.setUrlFilter ( spiderUrlFilter );       spider.setContentTypeFilter (         new Filter ( )         {           public boolean  isFiltrate ( Object  o )           {             return ( ( String ) o ).equals ( "text/html" );           }         } );       spider.push ( args [ 0 ] );       spider.init ( );       spider.start ( );     }     //////////////////////////////////////////////////////////////////////     //////////////////////////////////////////////////////////////////////     public  Spider (       Consumer  urlConsumer,       Filter    urlFilter,       Filter    contentTypeFilter )     //////////////////////////////////////////////////////////////////////     {       NullArgumentException.check ( this.urlConsumer = urlConsumer );       setUrlFilter ( urlFilter );       setContentTypeFilter ( contentTypeFilter );       stack = new Stack ( );       knownSet = new HashSet ( );       parserCallback = new HTMLEditorKit.ParserCallback ( )         {           public void  handleSimpleTag (             HTML.Tag             t,             MutableAttributeSet  a,             int                  pos )           {             if ( t == HTML.Tag.A )             {               push ( ( String ) a.getAttribute ( HTML.Attribute.HREF ) );             }             super.handleSimpleTag ( t, a, pos );           }         };     }     public  Spider ( Consumer  urlConsumer )     //////////////////////////////////////////////////////////////////////     {       this ( urlConsumer, null, null );     }     //////////////////////////////////////////////////////////////////////     // accessor methods     //////////////////////////////////////////////////////////////////////     public URL  getCurrentURL ( ) { return currentURL; }     //////////////////////////////////////////////////////////////////////     // mutator methods     //////////////////////////////////////////////////////////////////////     public boolean  push ( String  urlString )     //////////////////////////////////////////////////////////////////////     {       if ( urlString == null )       {         return false;       }       URL  newURL = null;       try       {         if ( !urlString.trim ( ).toLowerCase ( ).startsWith ( "http:" ) )         {           String  externalForm = currentURL.toExternalForm ( );           if ( !externalForm.endsWith ( "/" ) )           {             externalForm += "/";           }           newURL = new URL ( new URL ( externalForm ), urlString );         }         else         {           newURL = new URL ( urlString );         }         if ( newURL.getProtocol ( ).equals ( "http" )           && ( ( urlFilter == null )             || urlFilter.isFiltrate ( newURL ) ) )         {           String  externalForm = newURL.toExternalForm ( );           if ( externalForm.endsWith ( "/" ) )           {             externalForm               = externalForm.substring ( 0, externalForm.length ( ) - 1 );             newURL = new URL ( externalForm );           }           // trim off the leading "http://"           externalForm = externalForm.substring ( 7 );           if ( !knownSet.contains ( externalForm ) )           {             stack.push ( newURL );             knownSet.add ( externalForm );             return true;           }         }       }       catch ( MalformedURLException  ex )       {       }       return false;     }     public void  setContentTypeFilter ( Filter  contentTypeFilter )     //////////////////////////////////////////////////////////////////////     {       this.contentTypeFilter = contentTypeFilter;     }     public void  setUrlFilter ( Filter  urlFilter )     //////////////////////////////////////////////////////////////////////     {       this.urlFilter = urlFilter;     }     //////////////////////////////////////////////////////////////////////     // interface Lifecycle methods     //////////////////////////////////////////////////////////////////////     public void  init ( )     //////////////////////////////////////////////////////////////////////     {     }     public synchronized void  start ( )     //////////////////////////////////////////////////////////////////////     {       stopRequested = false;       if ( thread == null )       {         thread = new Thread (           new Runnable ( )           {             public void  run ( )             {               loop ( );             }           },           THREAD_NAME );         thread.start ( );       }       else       {         notify ( );       }     }     public synchronized void  stop ( )     //////////////////////////////////////////////////////////////////////     {       stopRequested = true;       thread.interrupt ( );     }     public synchronized void  destroy ( )     //////////////////////////////////////////////////////////////////////     {       thread = null;       stopRequested = false;       notify ( );     }     //////////////////////////////////////////////////////////////////////     // private methods     //////////////////////////////////////////////////////////////////////     private void  loop ( )     //////////////////////////////////////////////////////////////////////     {       while ( thread != null )       {         try         {           spiderNext ( );           if ( stopRequested )           {             synchronized ( this )             {               while ( stopRequested )               {                 wait ( );               }             }           }         }         catch ( InterruptedException  ex )         {         }       }     }     private void  spiderNext ( )       throws InterruptedException     //////////////////////////////////////////////////////////////////////     {       if ( stack.size ( ) < 1 )       {         stop ( );         destroy ( );       }       Thread.sleep ( DOWNLOAD_DELAY );       currentURL = ( URL ) stack.pop ( );       try       {         HttpURLConnection  httpURLConnection           = ( HttpURLConnection ) currentURL.openConnection ( );         String  contentType = null;         try         {           contentType = httpURLConnection.getContentType ( );           if ( contentType.equals ( "text/html" ) )           {             BufferedReader  bufferedReader = new BufferedReader (               new InputStreamReader ( currentURL.openStream ( ) ) );             try             {               DocumentParser  documentParser                 = new DocumentParser ( DTD.getDTD ( "html32" ) );               documentParser.parse (                 bufferedReader, parserCallback, true );             }             finally             {               bufferedReader.close ( );             }           }         }         finally         {           httpURLConnection.disconnect ( );         }         if ( ( contentTypeFilter == null )           || ( contentType != null )           && contentTypeFilter.isFiltrate ( contentType ) )         {           Thread.sleep ( DOWNLOAD_DELAY );           urlConsumer.consume ( currentURL );         }       }       catch ( Exception  ex )       {         ex.printStackTrace ( );       }     }     //////////////////////////////////////////////////////////////////////     //////////////////////////////////////////////////////////////////////     }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美羞羞免费网站| 成人一区二区三区视频在线观看 | 欧美一区二区三区不卡| 亚洲成人激情av| 91精品国产aⅴ一区二区| 日韩高清欧美激情| 久久久亚洲欧洲日产国码αv| 国产成人午夜精品影院观看视频 | 精品福利在线导航| 久久97超碰色| 国产精品热久久久久夜色精品三区| 成人激情免费网站| 亚洲高清在线视频| 欧美成人一区二区| eeuss影院一区二区三区| 亚洲一区二区欧美| 亚洲精品在线一区二区| 91视频一区二区| 日日夜夜免费精品视频| 精品欧美乱码久久久久久| 成人理论电影网| 亚洲成人免费视| 26uuu亚洲综合色| 色噜噜狠狠色综合中国| 美女一区二区在线观看| 国产精品国产三级国产专播品爱网| 一本色道久久综合亚洲91| 日韩二区在线观看| 国产精品久久毛片| 91精品中文字幕一区二区三区 | 国产1区2区3区精品美女| 亚洲欧美区自拍先锋| 欧美草草影院在线视频| 91麻豆免费观看| 国产一区二区三区四| 亚洲一区二区在线观看视频| 精品久久久网站| 91国内精品野花午夜精品| 国产一区免费电影| 亚洲一区视频在线| 国产精品免费久久| 日韩一区二区三区免费观看| 午夜在线电影亚洲一区| 奇米888四色在线精品| 国产精品欧美一级免费| 91精品免费在线| 91毛片在线观看| 国产91精品一区二区麻豆网站| 五月激情综合婷婷| 亚洲日本欧美天堂| 国产嫩草影院久久久久| 91精品国产一区二区人妖| 一本久久精品一区二区| 成人亚洲一区二区一| 久久国产精品区| 日本不卡视频在线观看| 亚洲夂夂婷婷色拍ww47 | 国产91精品一区二区| 麻豆精品精品国产自在97香蕉 | 日韩国产精品久久久| 洋洋av久久久久久久一区| 欧美国产日韩a欧美在线观看| 欧美r级在线观看| 91精品国产综合久久精品性色| 在线免费av一区| 成人av资源站| 成人精品电影在线观看| 国产精品99久久久久久宅男| 久久成人免费网| 美女脱光内衣内裤视频久久影院| 日韩和欧美一区二区三区| 亚洲成a人v欧美综合天堂| 一区二区三区自拍| 一区二区三区在线观看国产| 亚洲欧美在线观看| 亚洲欧洲99久久| 中文字幕日本不卡| 一区二区三区中文免费| 亚洲黄色尤物视频| 亚洲永久精品大片| 午夜在线成人av| 日韩经典一区二区| 蜜桃视频第一区免费观看| 免费国产亚洲视频| 国产一区二区在线视频| 懂色中文一区二区在线播放| 成人福利视频在线看| 99久久精品国产一区二区三区 | 91精品国产高清一区二区三区 | 国产91色综合久久免费分享| 国产一区二区三区免费在线观看| 国产福利一区二区三区视频 | 国产目拍亚洲精品99久久精品| 国产午夜亚洲精品羞羞网站| 国产精品萝li| 亚洲综合色区另类av| 日韩高清在线不卡| 国产在线乱码一区二区三区| 国产99久久久精品| 色哟哟精品一区| 欧美精品v国产精品v日韩精品 | 日韩理论在线观看| 一区二区高清在线| 日本最新不卡在线| 国产成人免费视频网站高清观看视频 | 国产制服丝袜一区| 97精品国产露脸对白| 欧美日韩五月天| 91精品国产综合久久精品性色| 久久久久久免费| 伊人开心综合网| 九色综合国产一区二区三区| 成人午夜电影网站| 制服.丝袜.亚洲.另类.中文| 精品99一区二区三区| 亚洲欧美另类小说视频| 日本一道高清亚洲日美韩| 丁香婷婷综合五月| 欧美日韩亚州综合| 国产三区在线成人av| 亚洲国产日日夜夜| 国产精品一区二区在线播放| 在线免费观看一区| 久久久国产综合精品女国产盗摄| 亚洲精品乱码久久久久久久久| 久久精品国产**网站演员| 成人高清免费观看| 日韩一级二级三级| 亚洲精品第一国产综合野| 国产一区二区三区精品视频| 欧美日韩亚洲国产综合| 国产精品色在线观看| 蜜桃视频一区二区三区在线观看| 91丨porny丨最新| 国产色产综合色产在线视频| 天堂蜜桃91精品| 色欧美乱欧美15图片| 久久婷婷久久一区二区三区| 婷婷成人激情在线网| 99久久婷婷国产综合精品电影 | 日韩三级.com| 一区二区免费看| av一二三不卡影片| 久久奇米777| 蜜桃视频免费观看一区| 欧美另类变人与禽xxxxx| 亚洲六月丁香色婷婷综合久久| 国产不卡在线视频| 久久久久久久久一| 九色综合国产一区二区三区| 欧美精品v日韩精品v韩国精品v| 依依成人精品视频| 91蜜桃传媒精品久久久一区二区| 国产欧美精品一区| 国产乱人伦偷精品视频免下载| 6080国产精品一区二区| 亚洲va欧美va天堂v国产综合| 色婷婷综合久久久中文一区二区| 国产精品久久久久四虎| 成人夜色视频网站在线观看| 精品粉嫩超白一线天av| 极品少妇xxxx偷拍精品少妇| 91精品国产色综合久久ai换脸| 亚洲777理论| 欧美日韩激情在线| 日韩精品亚洲专区| 91精品婷婷国产综合久久性色| 亚洲成人午夜电影| 91 com成人网| 久久精品国产99久久6| 精品国产一区二区精华| 99国产精品国产精品久久| 国产精品的网站| 97se狠狠狠综合亚洲狠狠| 一区二区三区国产豹纹内裤在线| 在线观看国产精品网站| 午夜欧美视频在线观看| 欧美一区二区三区公司| 九色综合狠狠综合久久| 久久九九99视频| 色综合色综合色综合| 亚洲成在人线免费| 欧美va亚洲va在线观看蝴蝶网| 国产精品一区二区在线观看不卡 | 国产欧美日韩精品在线| 成人黄色网址在线观看| 最新高清无码专区| 欧美日韩中文字幕精品| 久久成人免费电影| 国产精品免费视频观看| 欧洲在线/亚洲| 美女网站在线免费欧美精品| 久久久久99精品国产片| 成av人片一区二区| 亚洲一区二区三区不卡国产欧美| 日韩一二在线观看| 成人av在线电影| 亚洲成人av福利| 国产色产综合色产在线视频| 色久综合一二码|