用URLConnection打开连接用流读取实现抓取网页的程序,偶尔会有网页报出Connection reset,Connection timeout等异常。导致网页抓取失败,求解决办法

解决方案 »

  1.   

    try{}catch{} 然后重试。如果重试 3 次都失败,要考虑暂时放弃该页面的抓取。
      

  2.   

    还想问一下,发现在抓取页面的过程中。如果碰到目标页面为重定向的情况则报FileNotFoundException异常,又该如何解决?
      

  3.   

    还想问一下,发现在抓取页面的过程中。如果碰到目标页面为重定向的情况则报FileNotFoundException异常,又该如何解决?
      

  4.   

    要先检查HTTP头信息,然后根据重定向目标按重试来处理,避免陷入重定向循环陷阱。话说还是用HttpClient吧,不少基础能力都封装好了。
      

  5.   

    HttpURLConnection 这个类,有一个函数叫做:getResponseCode()其所返回的数值都有常量定义,200是正常(HTTP_OK),302和301是重定向(HTTP_MOVED_TEMP,HTTP_MOVED_PERM)连接后调用该函数来获取是否成功的编码,然后再使用函数Map<String,List<String>> getHeaderFields() 可以得到所有的HTTP头信息,其中有个叫做“Location”的是重定向后的新地址。Anyway,为啥不用封装的更好的HttpClient开源组件包呢?重复发明轮子多浪费自己的青春啊。
      

  6.   

    嗯,HttpClient用起来的确方便得多。我是想给自己个学习的机会呢,多实践实践。大哥好厉害,方不方便加个QQ啥的聊聊啊。