本帖最后由 imxinshou 于 2011-08-25 11:28:06 编辑

解决方案 »

  1.   


    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;public class Test1 {
        private static String getStaticPage(String surl) {
            String htmlContent = "";
            try {
                java.io.InputStream inputStream;
                java.net.URL url = new java.net.URL(surl);
                java.net.HttpURLConnection connection = (java.net.HttpURLConnection) url
                        .openConnection();
                connection.connect();
                inputStream = connection.getInputStream();
                byte[] bytes = new byte[1024 * 2000];
                int index = 0;
                int count = inputStream.read(bytes, index, 1024 * 2000);
                while (count != -1) {
                    index += count;
                    count = inputStream.read(bytes, index, 1);
                }
                htmlContent = new String(bytes, "UTF-8");
                connection.disconnect();
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            return htmlContent.trim();
        }    public static void main(String[] args) {
            try {
                String src = getStaticPage("http://www.google.com");
                File file = new File("d:\\aa.html");
                FileWriter resultFile = new FileWriter(file);
                PrintWriter myFile = new PrintWriter(resultFile);// 写文件
                myFile.println(src);
                resultFile.close();
                myFile.close();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
    1.需要设置连接超时的时间,你可以设长点,一般都是访问太快了导致服务器连接出现问题。
    2.你可以捕获这个异常,然后从异常的index开始在抓取。
    3.时间变短,建议用多线程来处理。