gpt4 book ai didi

java - 解析网站时出现 SocketTimeoutException(HW)

转载 作者:行者123 更新时间:2023-12-01 14:32:32 26 4
gpt4 key购买 nike

我们正在学习使用 JSOUP 和 urlconnection,因此我们正在解析我们选择的网站中的页面,并解析页面以回答有趣的问题。

一切正常,但是时不时地我会收到 SocketTimeOutException。我认为这是因为网站断开了我的程序(或者超时,或者限制,或者其他什么)。

每次下载新页面时,我都实现了 0-30 秒的随机 sleep 。我认为这有帮助,但这种情况仍然会发生。所以现在我 try catch 异常并 hibernate 15 分钟,然后再次递归尝试。

有没有更好的方法来处理这个问题?这是我收到异常的原因吗?

此外,每隔几分钟以某种方式更改 IP 是否会有帮助(这在 Java 中可能)?谢谢

最佳答案

Everything works well, however every now an then I get a SocketTimeOutException. I think this is because the website disconnects my program (or times me out, or throttles, or something).

HTTP 中的连接失败是预期的。这就是协议(protocol)的本质。造成这种情况的原因可能有很多(您的 newtork 不稳定,他们的网络不稳定,他们的防火墙认为您正在攻击他们并阻止,您的防火墙认为您受到攻击并阻止)。

I have implemented a random sleep between 0-30 seconds every time a new page is downloaded. and I think it helps but it still happens. So now I try to catch the exception and sleep for 15 minutes before recursively trying again.

每次成功获取页面或每次出现错误时我都会 sleep ,然后重试。不过,我不会等太久(15 分钟?),我会让两者都最多 1 分钟。

Is there a better way to handle this? Is this the reason I am getting the exception?

如上所述,由于网络原因,您会遇到异常。您对此无能为力,这是正常的网络行为。

Also, would it help to change IP somehow every few minutes (and is that possible in Java)?

如果目标网站执行某种日志记录并在 n 个请求后阻止 IP 地址,则会有所帮助。尽管如此,您仍无法通过 Java 按照您想要的方式更改它。 IP 地址属于机器(而不是程序),并且大多数情况下是由其他人而不是您分配的。

您可以通过代理发出 HTTP 请求,然后它们的 IP 地址将到达目标服务器(当代理被禁止时您将更改代理),但这将使您的连接更加不稳定,因为您在“交易”上再添加一层。

关于java - 解析网站时出现 SocketTimeoutException(HW),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16753341/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com