org.jsoup.HttpStatusException:HTTP错误提取URL。状态= 503(谷歌学者禁令?)

时间:2015-05-16 23:07:39

标签: connection web-crawler jsoup http-status-code-503 google-crawlers

我正在使用抓取工具,我必须从Google学术搜索的200-300个链接中提取数据。我有一个工作解析器,它从页面获取数据(在我的查询结果中,每个页面都有1-10个人的配置文件。我正在提取正确的链接,转到另一个页面并再次执行此操作)。在我的程序运行期间,我发现了以上错误:

org.jsoup.HttpStatusException: HTTP error fetching URL. Status=503, URL=https://ipv4.google.com/sorry/IndexRedirect?continue=https://scholar.google.pl/citations%3Fmauthors%3DAGH%2BUniversity%2Bof%2BScience%2Band%2BTechnology%26hl%3Dpl%26view_op%3Dsearch_authors&q=CGMSBFMKrI0YiJHfqgUiGQDxp4NLfGBv6zgPSjfyQ9LBi5F-K1EbGwQ
at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:537)

我知道它与针对机器人的简单谷歌保护相关联。我如何改善我的联系

    Connection connection = 
             Jsoup.connect(url)
              .userAgent("Mozilla/5.0")
              .timeout(10000)
              .followRedirects(true);
没有临时禁令?我知道有一种方法可以检查响应,如下所示:

Connection.Response response = 
           Jsoup.connect(url)
           .userAgent("Mozilla/5.0")
           .timeout(10000)
           .execute();

int statusCode = response.statusCode();
if (statusCode == 200) { ... }
else if (statusCode == 503) { do recconect magic}

但是当我收到503错误时该怎么办?我要使用代理吗?连接之间的随机等待时间?我希望有更好的想法,而不是将我的结果保存在文件中,手动硬重启路由器并尝试使用新的IP:P

1 个答案:

答案 0 :(得分:1)

您已经提供了自己的答案......

  

我是否要使用代理?

当然。您应该已经为您的wrawling活动设置了一堆代理。

  

连接之间的随机等待时间?

是。在3000到5000毫秒之间使用一些随机等待。

或者,如果您点击网址https://ipv4.google.com/sorry/IndexRedirect...,则可以使用在线验证码服务进行解析。不要经常打它或者你会被禁止。

快乐编码:)