gpt4 book ai didi

c# - 大量使用 Watin,IE 保持打开问题

转载 作者:太空狗 更新时间:2023-10-29 23:04:23 26 4
gpt4 key购买 nike

我在 C# 控制台应用程序中使用 Watin 来抓取网站,有五个控制台应用程序同时运行。我部分使用 Watin 作为爬虫的原因是因为一些网站使用 javascript(或 ajax)来设置页面内容。

以下是获取页面评论数的示例代码:

        Settings.Instance.MakeNewIeInstanceVisible = false;
using (var browser = new IE(commentLink, true))
{
browser.Link(Find.ByUrl(commentLink)).WaitUntilExists(20);

Span commentSpan = browser.Span("COUNT_TOTAL");

if (commentSpan.Exists)
{
int commentCount;
if (Int32.TryParse(commentSpan.InnerHtml, out commentCount))
{
return commentCount;
}
}
}

我的问题是在运行这 5 个控制台应用程序一段时间(90 分钟)后,许多 IE 实例保持打开状态(因为超时或错误或 IE 繁忙),因此系统非常慢并且需要重新启动.

如何更改我的代码以防止这种情况发生并使我的应用程序保持高效?

最佳答案

我认为,在您的示例代码中只有一个时刻,IE 不会关闭。因为你在using里面,即使那个using里面发生异常,浏览器也会被处理掉,所以一切都很好。

但是在创建浏览器的那一刻:

new IE(commentLink, true)

您不在 using 中,也没有神奇的 try...catch。试试这个,让我知道它是否有帮助:

Settings.Instance.MakeNewIeInstanceVisible = false;
using (var browser = new IE(true))
{
browser.GoTo(commentLink);

browser.Link(Find.ByUrl(commentLink)).WaitUntilExists(20);

Span commentSpan = browser.Span("COUNT_TOTAL");

if (commentSpan.Exists)
{
int commentCount;
if (Int32.TryParse(commentSpan.InnerHtml, out commentCount))
{
return commentCount;
}
}
}

关于c# - 大量使用 Watin,IE 保持打开问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2379222/

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