【发布时间】:2015-02-11 08:32:49
【问题描述】:
我正在开发一个 WPF 应用程序,我想获得一个使用 Angular JS 技术的网站的渲染 HTML。这是我尝试过的:
首先,我创建一个 WPF Web 浏览器控件:
private WebBrowser webBrowser;
然后我将它导航到我的目标网页:
var uri = new Uri("http://my-angualrjs-site.com", UriKind.RelativeOrAbsolute);
webBrowser.Navigate(uri);
在我的WebBrowser 实例的LoadCompleted 事件处理程序中,我将检索到的文档转换为mshtml.HTMLDocument:
var doc = (mshtml.HTMLDocument) webb.Document;
我得到的只是页面的原始 HTML,而不是 Angular JS 从服务器处理和呈现的 HTML。我错过了什么吗?
【问题讨论】:
-
您是否尝试过等待 30 秒然后抓取 HTML?
-
您是否暗示
LoadCompleted在实际加载完成之前触发? -
好吧,一旦 HTML 等关闭,它就会触发,但是 AngularJS 只是在这一点上开始做这件事。根据 API 调用等 Angular 在客户端执行的操作,可能需要几秒钟才能获得最终结果。这适用于任何客户端 Javascript 框架。
-
@JMK,等待的解决方案就像一个魅力,谢谢。
-
@Noseratio,我正在研究你更优雅的解决方案,也谢谢你。
标签: wpf angularjs webbrowser-control htmldocumentclass