我现在基本在把蜘蛛做完了,不过,在真正测试的时间碰到两个问题:
  现在使用的方法是:
    //通过URL获取HTML源代码
   public static String getHTHL(String OldURL)
   {
   try {   
           URL url = new URL(OldURL);   
           BufferedReader br = new BufferedReader(new InputStreamReader(url.openStream(),"utf-8"));   
           String s = "";   
           StringBuffer sb = new StringBuffer("");   
           while ((s = br.readLine()) != null) {   
               sb.append(s);   
           }   
           br.close();   
           return sb.toString();   
       } catch (Exception e) {   
           return null;
       }   
   }两个问题:
  1 无法正确识别网页编码 抓取网页会出现乱码
  2、无法让它自动在服务器没有响应里自动断开(超时)
   请各位大虾有没有什么好的解决方法。用其他的开源的工具也行像  HttpClient HtmlParser 也行

解决方案 »

  1.   

    1. 看HttpHeader里面是否有一定的encoding; 或者看HTML页面页面的encoding
    <meta http-equiv="Content-Language" content="zh-CN" />
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />2. 如果没抛异常, socket就认为只是一直等待, 不知道是否可以设置超时时间, socket肯定是可以的
      

  2.   

    Spider都抓完了,才考虑编码得问题, 肯定不好办了, 因为你无法从文本编码未知, 无法读取指定字段.如果通过扫描文件的特征来是别编码, 效率大大降低.应该是Spider的时候,就考虑编码问题. 把编码存入文本的前几个字节中.或者,Spider抓取的时候,通知对方Server只发送某种编码的流, 
    [HttpClient做这个还是很简单的]Spider下载并没有很大的工作量,此时做这样的工作还来的及的.