【问题标题】:JSOUP / HTTP error fetching URL. Status=503JSOUP / HTTP 错误获取 URL。状态=503
【发布时间】:2018-08-03 13:41:10
【问题描述】:

我正在使用 JSOUB 来抓取所有网页,如下所示:

   public static final String GOOGLE_SEARCH_URL = "https://www.google.com/search";

   String searchURL = GOOGLE_SEARCH_URL + "?q="+searchTerm+"&num="+num + 
      "&start=" + start;


    Document doc = Jsoup.connect(searchURL)
            .userAgent("Mozilla/5.0 Chrome/26.0.1410.64 Safari/537.31")
           // .ignoreHttpErrors(true)
            .maxBodySize(1024*1024*3) 
            .followRedirects(true)
            .timeout(100000)
            .ignoreContentType(true)
            .get();


    Elements results = doc.select("h3.r > a");

      for (Element result : results) {

        String linkHref = result.attr("href");
     }

但我的问题是在代码开始时运行良好。

一段时间后,它会停止并总是给我“HTTP error fetching URL. Status=503 error”。

当我添加 .ignoreHttpErrors(true) 时,它可以正常工作,但不会抓取网页。

*search term 是我要搜索的任何关键字,num 是我需要检索的页数。

有人可以帮忙吗? 这是否意味着谷歌阻止了我的 IP 抓取?如果是的话,请问有什么解决方案或者我如何浏览谷歌搜索结果吗?

我需要帮助。 谢谢,

【问题讨论】:

标签: java google-chrome jsoup


【解决方案1】:

503 错误通常意味着您尝试废弃的网站会阻止您,因为他们不希望非人类用户浏览他们的网站。尤其是谷歌。

你可以做一些事情。比如

  • 使用代理旋转器
  • 使用 chromedriver
  • 在每个页面之后为您的申请添加一些延迟

基本上,您需要尽可能人性化,以防止网站屏蔽您。

编辑:

我需要警告您,抓取 Google 搜索结果违反了他们的服务条款,并且可能是非法的,这取决于您所在的位置。

你能做什么

您可以使用代理轮换服务来屏蔽您的请求,以便 Google 将其视为来自多个区域的请求。谷歌proxy rotator service如果你有兴趣。这可能会很昂贵,具体取决于您对数据的处理方式。

然后编写一些模块来更改每个请求的User-Agent,以减少 Google 对您的请求的怀疑。

在抓取每个页面后添加随机延迟。我建议大约 1-5 秒。随机延迟让您的请求对 Google 来说更人性化

最后,如果一切都失败了,您可能需要查看 Google 搜索 API 并使用他们的 API 而不是抓取他们的网站。

【讨论】:

  • 感谢您的解决方案。我在每个页面之后为我的应用程序添加了一些延迟,它可以工作一段时间。但现在它停止工作了。我的意思是代码中的“结果”变量中没有任何内容。拜托,你能帮助我是网络抓取的新手吗?可以抓取网页吗?我不能使用不同的 IP 地址。谢谢你的帮助。
  • 这表明 Google 检测到您正在抓取他们的网站。您在results 中一无所获,因为 Google 返回 503 错误,这意味着您在验证您是人类之前被禁止访问该网站。你的爬虫不是。正如我之前所说,您必须编写爬虫代码以尽可能地模仿人类行为。延迟是一回事,但诸如 CookiesHTTP Headers 之类的另一件事也有助于 Google 分析您的请求。我更新了我的答案以获取更多详细信息。
  • 感谢您的澄清,请获得 Google 的许可在研究中执行此操作?...请问什么是代理轮换服务?你有什么推荐吗?
  • 请问,我可以在不需要任何图像或视频的搜索结果中添加一些限制或过滤吗??
  • 我个人使用stormproxies 作为代理轮换器,为了获得许可,他们确实有您可以使用的 API,但它不是免费的。而且我怀疑您是否可以从他们那里获得免费使用它的许可。
猜你喜欢
  • 2017-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-28
相关资源
最近更新 更多