【问题标题】:Problem using the webbrowser control使用网络浏览器控件的问题
【发布时间】:2011-06-11 12:33:49
【问题描述】:

我正在研究爬虫并使用网络浏览器控件。 现在我在同一个控件中逐页浏览页面。

但是当我这样做时,有时浏览器会在第一页完全加载之前开始加载其他页面。虽然有时它会停止所有执行并且没有页面正在处理中。

我正在使用 webBrowser1_DocumentCompleted 事件来处理文档,有时它会被多次加载。

那么有什么解决方案可以让我检查我的网络浏览器是忙于工作还是浏览完毕。

【问题讨论】:

  • 哪个网页浏览器控制? Windows 窗体? WPF?

标签: c# .net webbrowser-control


【解决方案1】:

我注意到,如果页面使用框架,它确实会多次完成文档。
您可以从 WebBrowser1_DocumentCompleted 事件参数中获取加载页面的 URL。

如果是多帧的情况,可以比较一下WebBrowser1_DocumentCompleted的URL和WebBrowser1.URL

所以

if(e.URL == webBrowser1.url) {
  // The main page is done loading
}

或者你可以试试看

WebBrowser1.ReadyState == WebBrowserReadyState.Complete

我在 WinForms WebBrowser 控件中发现的几个问题是

当通过 AJAX 完成更改时,您有权访问的 DOM 不会更新。

除非您做一些额外的工作来检测新窗口何时创建并将其放入选项卡中,(有一些关于如何做到这一点的文章,如果您需要我可以发送链接) 打开新窗口的页面将在新进程中启动,因此您无法抓取这些页面并且它们会丢失会话,因此如果您登录到网页,您将在新窗口中注销。

【讨论】:

  • 谢谢 jamiegs 那就是我要找的东西。
猜你喜欢
  • 1970-01-01
  • 2011-03-11
  • 2011-03-19
  • 1970-01-01
  • 2011-01-13
  • 2013-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多