【问题标题】:java.io.IOException: Server returned HTTP response code: 503 for URL: Errorjava.io.IOException:服务器返回 HTTP 响应代码:503 for URL:错误
【发布时间】:2014-02-22 05:55:04
【问题描述】:

我通过从网站获取 HTML 代码然后用 Java 解析它来从网站上抓取数据。

我目前正在使用 java.net.URL 以及 java.net.URLConnection。这是我用来从某个网站获取 HTML 代码的代码(在 this website 上找到,稍作编辑以满足我的需要):

public static String getURL(String name) throws Exception{

    //Set URL
    String s = "";
    URL url = new URL(name);
    URLConnection spoof = url.openConnection();

    //Spoof the connection so we look like a web browser
    spoof.setRequestProperty( "User-Agent", "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0; H010818)" );
    BufferedReader in = new BufferedReader(new InputStreamReader(spoof.getInputStream()));
    String strLine = "";

    //Loop through every line in the source
    while ((strLine = in.readLine()) != null){

        //Prints each line to the console
        s = s + strLine + "\n";
    }
    return s;
}

当我运行它时,可以正确接收大约 100-200 个网页的 HTML 代码。然而,在我完成抓取 HTML 代码之前,我得到了一个“java.io.IOException:服务器返回 HTTP 响应代码:URL 的 503”异常。我已经充分研究了这个主题,而其他问题,如this 不包括我正在使用的包。

提前感谢您的帮助!

【问题讨论】:

  • 503 通常是由 Web 服务器临时过载引起的。可能是您的进程淹没了它,或者可能有其他东西在访问 Web 服务器。如果您尝试在每个请求之间插入短暂睡眠会发生什么?
  • 现在运行它。每次访问之间有 100 毫秒的休息,每次访问之间的长时间停顿似乎更少,但它们仍然存在。等到它完成。编辑 1:在 358 中的 339 访问时,它给出了相同的错误。添加延迟似乎没有帮助,所以我会延迟 1000 秒运行它。
  • 好的。添加一个完整的 1 秒延迟仍然可以将其输出为大约 240 次访问。我会试试下面的答案。

标签: java html


【解决方案1】:

也许服务器有限制。在这种情况下,您可以尝试使用 Socket 和 input/outputStream 而不是 URLConnection

【讨论】:

    猜你喜欢
    • 2023-03-17
    • 2018-09-27
    • 2013-09-12
    • 2013-08-12
    • 1970-01-01
    • 2016-02-24
    • 2011-08-23
    • 2011-04-21
    • 1970-01-01
    相关资源
    最近更新 更多