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

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

?? getsite.java

?? java web-spider out world program
?? JAVA
字號:
import java.awt.*;import java.util.*;import javax.swing.*;import java.io.*;import com.heaton.bot.*;import java.net.*;/** * Example program from Chapter 12 * Programming Spiders, Bots and Aggregators in Java * Copyright 2001 by Jeff Heaton * * * This example program will download all of the HTML files * of a website to a local drive. This shows how a spider can * be used to map/download a site. This example is very similar * to the example from chapter 8. This program processes the * bot exclusion header and does not "spider" the areas that * are disallowed. * * @author Jeff Heaton * @version 1.0 */public class GetSite extends javax.swing.JFrame implements ISpiderReportable {  /**   * The bot exclusion object.   */  BotExclusion _exclude = null;  /**   * The underlying spider object.   */  Spider _spider = null;  /**   * The current page count.   */  int _pagesCount;  /**   * The constructor. Set up the visual Swing   * components that make up the user interface   * for this program.   */  public GetSite()  {    //{{INIT_CONTROLS    setTitle("A Conscientious Spider");    getContentPane().setLayout(null);    setSize(405,268);    setVisible(false);    D.setHorizontalTextPosition(                               javax.swing.SwingConstants.LEFT);    D.setVerticalTextPosition(                             javax.swing.SwingConstants.TOP);    D.setVerticalAlignment(                          javax.swing.SwingConstants.TOP);    D.setText("Download pages of:");    getContentPane().add(D);    D.setBounds(12,12,384,24);    JLabel2.setText("URL:");    getContentPane().add(JLabel2);    JLabel2.setBounds(12,36,36,24);    getContentPane().add(_url);    _url.setBounds(48,36,348,24);    JLabel3.setText("Select local path to download files");    getContentPane().add(JLabel3);    JLabel3.setBounds(12,72,384,24);    getContentPane().add(_save);    _save.setBounds(12,96,384,24);    _go.setText("GO!");    getContentPane().add(_go);    _go.setBounds(96,228,216,24);    getContentPane().add(_current);    _current.setBounds(12,204,384,12);    JLabel4.setText("Number of pages:");    getContentPane().add(JLabel4);    JLabel4.setBounds(12,180,120,12);    _pages.setText("0");    getContentPane().add(_pages);    _pages.setBounds(120,180,108,12);    JLabel6.setText(                   "Select local path(and filename) to write log to(optional):");    getContentPane().add(JLabel6);    JLabel6.setBounds(12,120,384,24);    _logPath.setText("./spider.log");    getContentPane().add(_logPath);    _logPath.setBounds(12,144,384,24);    _go.setActionCommand("jbutton");    //}}    //{{INIT_MENUS    //}}    //{{REGISTER_LISTENERS    SymAction lSymAction = new SymAction();    _go.addActionListener(lSymAction);    SymWindow aSymWindow = new SymWindow();    this.addWindowListener(aSymWindow);    //}}    setLocation(32,32);  }  /**   * Added by Visual Cafe.   *   * @param b   */  public void setVisible(boolean b)  {    if ( b )      setLocation(50, 50);    super.setVisible(b);  }  /**   * Program entry point, causes the main   * window to be displayed.   *   * @param args Command line arguments are not used.   */  static public void main(String args[])  {    (new GetSite()).setVisible(true);  }  /**   * Added by Visual Cafe.   */  public void addNotify()  {    // Record the size of the window prior    // to calling parents addNotify.    Dimension size = getSize();    super.addNotify();    if ( frameSizeAdjusted )      return;    frameSizeAdjusted = true;    // Adjust size of frame according to the insets and menu bar    Insets insets = getInsets();    javax.swing.JMenuBar menuBar = getRootPane().getJMenuBar();    int menuBarHeight = 0;    if ( menuBar != null )      menuBarHeight = menuBar.getPreferredSize().height;    setSize(insets.left +            insets.right +            size.width,            insets.top +            insets.bottom +            size.height + menuBarHeight);  }  // Used by addNotify  boolean frameSizeAdjusted = false;  //{{DECLARE_CONTROLS  javax.swing.JLabel D = new javax.swing.JLabel();  javax.swing.JLabel JLabel2 = new javax.swing.JLabel();  /**   * The URL to spider.   */  javax.swing.JTextField _url = new javax.swing.JTextField();  javax.swing.JLabel JLabel3 = new javax.swing.JLabel();  /**   * The directory to save the files to.   */  javax.swing.JTextField _save = new javax.swing.JTextField();  /**   * The go button.   */  javax.swing.JButton _go = new javax.swing.JButton();  /**   * Displays the current page.   */  javax.swing.JLabel _current = new javax.swing.JLabel();  javax.swing.JLabel JLabel4 = new javax.swing.JLabel();  /**   * A count of how many pages have been   * downloaded.   */  javax.swing.JLabel _pages = new javax.swing.JLabel();  javax.swing.JLabel JLabel6 = new javax.swing.JLabel();  /**   * Used to specify the path to store the   * log to.   */  javax.swing.JTextField _logPath = new javax.swing.JTextField();  //}}  //{{DECLARE_MENUS  //}}  /**   * An event handler class, generated by Visual Cafe.   *   * @author Visual Cafe   */  class SymAction implements java.awt.event.ActionListener {    public void actionPerformed(java.awt.event.ActionEvent event)    {      Object object = event.getSource();      if ( object == _go )        Go_actionPerformed(event);    }  }  /**   * As the files of the website are located,   * this method is called to save them to disk.   *   * @param file The HTTP object corrisponding to the page   * just visited.   */  protected void processFile(HTTP file)  {    try {      if ( _save.getText().length()>0 ) {        URL url = new URL(file.getURL());        String targetPath = url.getPath();        targetPath = URLUtility.convertFilename(_save.getText(),targetPath);        FileOutputStream fso =              new FileOutputStream(              new File(targetPath) );        fso.write( file.getBodyBytes() );        fso.close();       }    } catch ( Exception e ) {      Log.logException("Can't save output file: ",e);    }  }  /**   * This is where most of the action takes place. This   * method is called when the GO! button is pressed.   *   * @param event The event   */  void Go_actionPerformed(java.awt.event.ActionEvent event)  {    IWorkloadStorable wl = new SpiderInternalWorkload();    if ( _spider!=null ) {      Runnable doLater = new Runnable()      {        public void run()        {          _go.setText("Canceling...");        }      };      SwingUtilities.invokeLater(doLater);      _spider.halt();      return;    }    try {      if ( _url.getText().length()>0 ) {        HTTPSocket http = new HTTPSocket();        http.send(_url.getText(),null);        _exclude = new BotExclusion();        _exclude.load(new HTTPSocket(),_url.getText());      } else {        _current.setText("<<distributed mode>>");      }    } catch ( Exception e ) {      JOptionPane.showMessageDialog(this,                                    e,                                    "Error",                                    JOptionPane.OK_CANCEL_OPTION,                                    null );      return;    }    Runnable doLater = new Runnable()    {      public void run()      {        _go.setText("Cancel");        _current.setText("Loading....");      }    };    SwingUtilities.invokeLater(doLater);    // Prepare to start the spider    _pagesCount = 0;    if ( _logPath.getText().length()>0 ) {      File file = new File(_logPath.getText());      file.delete();      Log.setLevel(Log.LOG_LEVEL_NORMAL);      Log.setFile(true);      Log.setConsole(false);      Log.setPath(_logPath.getText());    }// NOTE: To use SQL based workload management,// uncomment the following lines and include a// valid data source./*    try    {      wl = new SpiderSQLWorkload(        "sun.jdbc.odbc.JdbcOdbcDriver",        "jdbc:odbc:WORKLOAD");    }    catch(Exception e)    {      JOptionPane.showMessageDialog(this,        e,        "Error",        JOptionPane.OK_CANCEL_OPTION,        null );    }*/    _spider    = new Spider( this,                  _url.getText(),                  new HTTPSocket(),                  100,                  wl);    _spider.setMaxBody(200);    _spider.start();  }  /**   * This method is called by the spider when an   * internal link is found.   *   * @param url The URL of the link that was found. This   * link is passed in fully resolved.   * @return True if the spider should add this link to   * its visitation list.   */  public boolean foundInternalLink(String url)  {    return(!_exclude.isExcluded(url));  }  /**   * This method is called by the spider when an   * external link is found. An external link is   * one that points to a different host.   *   * @param url The URL of the link that was found. This   * link is passed in fully resolved.   * @return True if the spider should add this link to   * its visitation list.   */  public boolean foundExternalLink(String url)  {    return false;  }  /**   * This method is called by the spider when an   * other type link is found. Links such as email   * addresses are sent to this method.   *   * @param url The URL of the link that was found. This   * link is passed in fully resolved.   * @return True if the spider should add this link to   * its visitation list.   */  public boolean foundOtherLink(String url)  {    return false;  }  /**   * A simple class used to update the current   * URL target. This is necessary, because Swing   * only allows GUI compoents to be updated by the   * main thread.   *   * @author Jeff Heaton   * @version 1.0   */  class UpdateTarget implements Runnable {    public String _t;    public void run()    {      _current.setText(_t);      _pages.setText( "" + _pagesCount );    }  }  /**   * Called by the spider when a page has been   * loaded, and should be processed. For the   * example, this method will save this file   * to disk.   *   * @param page The HTTP object that corrispondeds to the   * page just visited.   */  public void processPage(HTTP page)  {    _pagesCount++;    UpdateTarget ut = new UpdateTarget();    ut._t = page.getURL();    SwingUtilities.invokeLater(ut);    processFile(page);  }  /**   * Not used. This must be implemented because   * of the interface. Called when a page completes.   *   * @param page The page that just completed.   * @param error True if the completion of this page   * resulted in an error.   */  public void completePage(HTTP page,boolean error)  {  }  /**   * This method is called to determine if   * query strings should be stripped.   *   * @return Returns true if query strings(the part of   * the URL after the ?) should be stripped.   */  public boolean getRemoveQuery()  {    return true;  }  /**   * This method is called once the spider   * has no more work to do.   */  public void spiderComplete()  {    if ( _spider.isHalted() ) {      JOptionPane.showMessageDialog(this,                                    "Download of site has been canceled. " +                                    "Check log file for any errors.",                                    "Done",                                    JOptionPane.OK_CANCEL_OPTION,                                    null );    } else {      JOptionPane.showMessageDialog(this,                                    "Download of site is complete. " +                                    "Check log file for any errors.",                                    "Done",                                    JOptionPane.OK_CANCEL_OPTION,                                    null );    }    _spider=null;    Runnable doLater = new Runnable()    {      public void run()      {        _go.setText("GO!!");      }    };    SwingUtilities.invokeLater(doLater);  }  /**   * An event handler class, generated by Visual Cafe.   *   * @author Visual Cafe   */  class SymWindow extends java.awt.event.WindowAdapter {    public void windowClosed(java.awt.event.WindowEvent event)    {      Object object = event.getSource();      if ( object == GetSite.this )        GetSite_windowClosed(event);    }  }  /**   * Called to close the window.   *   * @param event The event.   */  void GetSite_windowClosed(java.awt.event.WindowEvent event)  {    System.exit(0);  }}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美日韩精品久久久久| 亚洲五月六月丁香激情| 欧美亚州韩日在线看免费版国语版| 蜜桃在线一区二区三区| 亚洲人成7777| 国产亚洲欧洲一区高清在线观看| 91国偷自产一区二区开放时间| 久久精品国产精品亚洲综合| 一区二区三区在线观看视频| 久久久蜜臀国产一区二区| 欧美精品乱码久久久久久按摩| 91丨porny丨国产入口| 国产一区中文字幕| 麻豆视频观看网址久久| 亚洲成人在线观看视频| 亚洲在线免费播放| 久久精品人人做| 337p日本欧洲亚洲大胆色噜噜| 欧美日韩一卡二卡三卡 | 免费看精品久久片| 亚洲一区二区三区激情| 亚洲欧美日韩电影| 亚洲色图欧美偷拍| 国产精品乱码一区二区三区软件| 精品国产精品网麻豆系列| 9191久久久久久久久久久| 欧美亚洲动漫精品| 欧美性生活久久| 欧美色欧美亚洲另类二区| 在线免费观看成人短视频| 不卡的看片网站| www.色综合.com| 91丨九色丨蝌蚪丨老版| 懂色中文一区二区在线播放| 国产乱码精品1区2区3区| 激情小说亚洲一区| 国产一区二区久久| 国产成人精品免费在线| 大胆欧美人体老妇| 99麻豆久久久国产精品免费优播| av一二三不卡影片| 色噜噜夜夜夜综合网| 欧美做爰猛烈大尺度电影无法无天| 一本大道久久a久久综合| 91麻豆文化传媒在线观看| 国产午夜精品一区二区三区嫩草 | 欧美一区二区免费观在线| 欧美三级电影精品| 在线播放91灌醉迷j高跟美女| 欧美日韩国产美女| 欧美一级高清大全免费观看| 日韩欧美国产三级电影视频| 26uuu亚洲综合色| 国产精品免费久久久久| 亚洲欧美日韩国产综合在线| 亚洲一区二区av在线| 日韩电影一区二区三区四区| 久久国产麻豆精品| 国产大陆a不卡| 色综合久久综合| 欧美理论在线播放| 欧美精品一区二| 一区免费观看视频| 国产在线播放一区三区四| 国产盗摄视频一区二区三区| 91麻豆国产自产在线观看| 欧美体内she精高潮| 精品国产乱码久久久久久蜜臀 | eeuss鲁片一区二区三区在线观看| 成人深夜在线观看| 欧美在线免费视屏| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 国产一区二区不卡在线| www.色综合.com| 91精品国产综合久久久久久久久久 | 在线成人高清不卡| 国产视频不卡一区| 亚洲成人av一区二区三区| 韩国三级电影一区二区| 95精品视频在线| 91精选在线观看| 国产精品不卡一区二区三区| 五月天激情综合| www.欧美亚洲| 欧美一区二区三级| 亚洲日本在线视频观看| 久久66热偷产精品| 91黄色小视频| 欧美激情一区在线| 日本中文字幕不卡| 91玉足脚交白嫩脚丫在线播放| 91.xcao| 亚洲男人的天堂av| 1024亚洲合集| 欧美国产精品一区| 欧美一区二区三区四区在线观看| 2021中文字幕一区亚洲| 亚洲在线中文字幕| 国产成人高清在线| 日韩午夜电影在线观看| 亚洲精选在线视频| 国产91综合一区在线观看| 欧美日韩国产精品自在自线| 国产精品电影一区二区三区| 久久国产精品99久久久久久老狼| 91免费版在线| 欧美韩日一区二区三区| 精品一区二区三区在线播放视频 | 最新成人av在线| 精品一区二区三区久久久| 欧美在线一二三| 国产精品婷婷午夜在线观看| 美腿丝袜在线亚洲一区| 欧美性欧美巨大黑白大战| 最近日韩中文字幕| 成人福利视频在线| 国产亚洲精品aa午夜观看| 高清不卡一二三区| 欧美成人vr18sexvr| 午夜一区二区三区在线观看| 一本色道久久综合狠狠躁的推荐 | 欧美日韩激情在线| 亚洲一区免费视频| 色婷婷一区二区| 亚洲欧洲三级电影| 成人精品一区二区三区四区| 欧美国产乱子伦 | 欧美午夜电影网| 亚洲精品国产品国语在线app| 成人高清在线视频| 亚洲欧洲av在线| 99re视频精品| 亚洲美女偷拍久久| 91久久精品一区二区二区| 亚洲乱码中文字幕| 色香蕉久久蜜桃| 亚洲午夜一区二区三区| 欧美性一二三区| 日韩一区精品字幕| 欧美日韩成人综合天天影院| 午夜久久久久久久久| 91精品在线麻豆| 久久99在线观看| 久久久国产精品午夜一区ai换脸| 国产一区二区三区在线观看免费 | 激情亚洲综合在线| 久久精品视频一区| 99精品在线免费| 亚洲美女精品一区| 欧美亚洲国产bt| 日韩不卡一区二区| 337p粉嫩大胆色噜噜噜噜亚洲| 国产精品一卡二| 综合中文字幕亚洲| 欧美三级韩国三级日本一级| 日本亚洲视频在线| 国产亚洲人成网站| 91久久一区二区| 美脚の诱脚舐め脚责91| 国产三级精品三级在线专区| 97久久超碰国产精品| 亚洲高清中文字幕| 久久久久久综合| 色88888久久久久久影院按摩 | 亚洲欧美偷拍三级| 欧美日韩不卡在线| 国内精品伊人久久久久影院对白| 中文字幕乱码一区二区免费| 色哟哟精品一区| 成人免费毛片嘿嘿连载视频| 亚洲欧美日韩综合aⅴ视频| 欧美喷潮久久久xxxxx| 国产激情精品久久久第一区二区 | 久久久精品综合| 在线亚洲精品福利网址导航| 蜜桃一区二区三区四区| 国产精品美女久久久久aⅴ国产馆| 欧美在线观看你懂的| 国产一区二区在线视频| 亚洲一区二区三区四区在线免费观看| 日韩一二三区不卡| 色综合激情久久| 国产精品中文有码| 午夜av一区二区三区| 国产精品拍天天在线| 日韩欧美亚洲一区二区| 99国产一区二区三精品乱码| 老司机精品视频一区二区三区| 国产精品九色蝌蚪自拍| 欧美一级视频精品观看| 91麻豆国产精品久久| 国精产品一区一区三区mba视频| 亚洲乱码国产乱码精品精可以看| 日韩免费视频线观看| 欧美亚洲尤物久久| jvid福利写真一区二区三区| 久久精品国产一区二区三区免费看| 亚洲精品日日夜夜| 中文字幕国产一区| 久久久久久久性|