我正在使用抓取工具,我必须从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
答案 0 :(得分:1)
您已经提供了自己的答案......
我是否要使用代理?
当然。您应该已经为您的wrawling活动设置了一堆代理。
连接之间的随机等待时间?
是。在3000到5000毫秒之间使用一些随机等待。
或者,如果您点击网址https://ipv4.google.com/sorry/IndexRedirect...
,则可以使用在线验证码服务进行解析。不要经常打它或者你会被禁止。
快乐编码:)