使用jsoup爬虫超时分析与处理

1.请求头信息得一致

当你捕获到一个采用JSOUP 去请求超时的链接,我是通过catch 去发现。

  1. try{
  2. doc = Jsoup.connect(url)
  3. .header("User-Agent", "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:49.0) Gecko/20100101 Firefox/49.0")
  4. .header("Connection", "close")//如果是这种方式,这里务必带上
  5. .timeout(8000)//超时时间
  6. .get();
  7. } catch (Exception e) {//可以精确处理timeoutException
  8. //超时处理
  9. }

通过try···catch 去发现超时,然后结合自己的处理,这里要说几个问题。

  1. 请求头信息,在你尝试去爬取对方的内容的时候,需要尽可能的和你在http浏览器请求的请求头一致,注意是请求头,不是相应头。
  2. 在请求头里务必加上Connection:close ,有同学可能会问,这个不是相应头里的吗?是的,有的时候你看到在请求头里,有的时候看到在相应头里,而且一般是 Connection:keep-alive ,你加上就可以了。下面会讲到。
  3. 当发现对方拒绝请求的时候,把浏览器里看到的请求头全部加上,甚至  Cookie  也加上,注意换行和空格,需要自己处理下。尽量一行。
  4. 如果对方网站过弱,请采用单线程爬取,要不然会大量超时,甚至把对方Kill 了。
  5. 如果对方有  IP  限制,采用  IP  代理,或者频率放缓慢一点。

下面看两张图对比下。

posted @ 2019-07-13 20:37  CHANGEMAX  阅读(490)  评论(0编辑  收藏  举报