我正在使用刮刀并使用webbrowser控件。 现在我在同一个控件中逐页浏览页面。
虽然我这样做,但有时浏览器会在第一页完全加载之前开始加载其他页面。有时它会停止所有执行,并且没有页面正在进行中。
我正在使用webBrowser1_DocumentCompleted事件来处理文档,有时它被加载了多次。
那么有什么解决方案可以检查我的网络浏览器是否正在忙于工作或已完成浏览。
答案 0 :(得分:4)
我注意到如果页面使用框架,它会多次完成文档 您可以从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不会更新。
除非你做一些额外的工作来检测何时创建一个新窗口并将其放入一个标签,(有一些关于如何做到这一点的文章,如果你需要它我可以发送一个链接) 打开新窗口的页面将在新进程中启动,因此您将无法抓取这些页面,并且会松开会话,因此如果您登录到网页,则会在新窗口中注销。