【问题标题】:org.jsoup.HttpStatusException: HTTP error fetching URL. Status=503 (google scholar ban?)org.jsoup.HttpStatusException:获取 URL 的 HTTP 错误。状态=503(谷歌学者禁令?)
【发布时间】:2015-07-28 16:27:03
【问题描述】:

我正在研究爬虫,我必须从 Google Scholar 上的 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

【问题讨论】:

  • 很清楚:Google 不希望您从他们的网站上抓取数据。唯一的解决方法是使用代理,但这不会长期有效。有非官方的 api,例如 this pyton one,但你不会有更好的结果。检查this,因为 Google 不希望您抓取数据,[续..]
  • 并检查 this 以获取 Microsoft Academic Search Api,它可能会提供您想要的东西。 (向下滚动)。
  • 你在每次抓取之间放置了什么样的延迟?如果答案是“根本没有”,那么你应该被禁止 - 一个良好的服务器/连接可能会因拒绝服务而使目标超载(实际上它不会与谷歌一起,但那会错过重点) .你能在每个 HTTP 操作之间设置几秒钟的延迟吗?这可能会有所帮助 - 我用了五秒钟。
  • @Izzy 嗨兄弟,你介意分享代码以解决谷歌的软禁令。因为我正在做类似的事情来从谷歌新闻中提取数据

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


【解决方案1】:

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

我必须使用代理吗?

当然。你应该已经为你的爬行活动设置了一堆代理。

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

是的。使用 3000 到 5000 毫秒之间的随机等待。

或者,如果您点击 URL https://ipv4.google.com/sorry/IndexRedirect...,您可以使用在线验证码服务进行解析。不要太频繁地点击它,否则你会被禁止。

编码愉快:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 2017-05-20
    • 2017-05-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多