我用Jsoup 爬取网站数据时,设置了延时时间,但爬到一部分时会Connection reset.
我的请求代码如下:
这里面为什么不可以添加SocketException 的异常,它确实在这个地方报了这个异常呀。。。。。。。。。。
我想知道出现connection reset后,怎么重连,继续把剩下的任务做完。。。。。
我用Jsoup 爬取网站数据时,设置了延时时间,但爬到一部分时会Connection reset.
我的请求代码如下:
这里面为什么不可以添加SocketException 的异常,它确实在这个地方报了这个异常呀。。。。。。。。。。
我想知道出现connection reset后,怎么重连,继续把剩下的任务做完。。。。。
SocketException connection reset,我们先分析一下这个异常出现的原因,然后给出解决方案。
首先这个异常是服务器端主动向客户端断开连接,在TCP协议中有一个reset标志,客户端发送数据发现TCP已经被重置,于是程序会抛出上面的异常。你有可能你在一定时间内发送请求过多,被限流了。也就是说作为爬虫这是一个正常的情况,那么有两种方案可以解决:
1,限流+重试
你可以使用限流,一旦超过阈值,就丢到队列,只要速度降下去了,问题应该可以解决。如果失败,退到任务队列继续做,注意加上重试次数
2,代理池
买代理池,通过把IP降下去的方式,防止被拦截