【问题标题】:java.net.SocketTimeoutException error while web-scraping网络抓取时出现 java.net.SocketTimeoutException 错误
【发布时间】:2011-05-24 21:28:36
【问题描述】:

我目前正在开发一个程序,该程序通过 sourceforge.com 抓取并从用 java 编写的开源项目的存储库中检索 tarball 链接。

我最初在主页中触发了一个空搜索命令,它列出了 sourceforge.net 中的项目,左侧​​有过滤器。然后我按“java”编程语言进行过滤,然后浏览每个类别(总共 10 个项目类别)并检索每个类别中前 25 个项目的链接。因此,现在我有一个包含 250 个项目名称及其网址的 Hashmap。 进一步,我进入这些链接中的每一个,并在其每个页面中获取“浏览代码”链接。此页面有“下载 TARball”的链接。

当我尝试连接到不同的页面并从主页更深入时,我在运行时收到以下错误(该错误在执行期间随机发生)

线程“main”java.net.SocketTimeoutException 中的异常:读取超时 在 java.net.SocketInputStream.socketRead0(Native Method)

我尝试在每个“Jsoup.connect”请求之间留出 3 分钟的等待时间。但错误仍然存​​在。 我不确定为什么会发生这种情况以及如何解决这个问题。欢迎任何建议和想法。

下面提供了一个示例链接流: 1. 主页 2. 空搜索被解雇 3. 按 Java 和 Mobile 类别过滤 4.过滤后的第一个项目 5. 浏览项目中的链接:http://wurfl.cvs.sourceforge.net/wurfl/ 6. 最终压缩包链接:http://wurfl.cvs.sourceforge.net/viewvc/wurfl/?view=tar

【问题讨论】:

    标签: java sockets download web-scraping sourceforge


    【解决方案1】:

    我不确定为什么会发生这种情况以及如何解决。欢迎任何建议和想法。

    两种可能:

    • 服务器暂时超载、损坏等等。

    • 服务器正在实施某种技术手段来尝试防止您的网络抓取。

    您是否检查过您尝试执行的操作是否符合SourceForge Terms of Service

    【讨论】:

    • @Stephen... 非常感谢您的及时回复。我查看了 sourceforge.net 中给出的“条款”,它并没有真正指定任何反对网络抓取的内容。 Wrt 这个错误,我在 stackoverflow 上查看了与网络抓取相关的问题,并开始知道“连接和网络问题可能导致此类问题。为了避免阻止抓取其他 url,您可以将工作并行化到单独的线程中。”我对java中的线程不太了解。有什么想法可以帮助解决这个问题吗?值得一试吗?
    • 并行化可能会增加 StackOverflow 服务器的负载并使问题变得更糟。我还要提请您注意“禁止使用”项 d) 和 e)。听起来你可能违反了 d)。
    • 另一个建议 - 通过他们的正常支持渠道向 SourceForge 人员寻求建议。
    • @Stephen... 是的.. 并行增加了负载.. 并且是的.. 我已经邮寄了 sourceforge ppl 以了解是否允许我想做的事情。再次感谢..
    猜你喜欢
    • 2022-12-18
    • 1970-01-01
    • 2016-10-12
    • 2021-10-10
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    相关资源
    最近更新 更多