我在服务器上的解析器中使用 HTMLAgilityPack,但我正在解析的其中一个网站出现问题:每天早上 6 点左右,他们往往会关闭服务器进行维护,这会抛出 HTMLWeb 的 Load() 方法,并使我的应用程序崩溃。你们有没有更安全的方法将网站加载到 HTMLAgilityPack 中,或者是否有某种方法可以在 C# 中进行错误检查以防止我的应用程序崩溃? (我的 C# 有点生疏了)。这是我的代码:
HtmlWeb webGet = new HtmlWeb();
HtmlDocument document = webGet.Load(dealsiteLink); //The Load() method here stalls the program because it takes 1 or 2 minutes before it realizes the website is down
谢谢!
最佳答案
只需用 try-catch 包围调用:
HtmlWeb webGet = new HtmlWeb();
HtmlDocument document;
try
{
document = webGet.Load(dealsiteLink);
}
catch (WebException ex)
{
// Logic to retry (maybe in 10 minutes) goes here
}
确切的重试逻辑将取决于您的应用程序的结构 - 您可能会发现 try-catch
block 需要放在更高的位置,您的应用程序需要比这高得多.
我认为 WebException
是您应该捕获的异常,但我不能确定,因为我找不到文档。您可能会发现还需要捕获 TimeoutException
。
关于c# - HTMLAgilityPack 和加载超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5876825/