我正在使用C#HttpWebRequest来获取网页的一些数据.问题是在加载页面后使用javascript/ajax更新了一些数据,而我没有在响应字符串中获取它.有没有办法让webrequest等到页面中的所有脚本都已完成执行?
谢谢
阿米特
只是一个想法,但有一种方法让.net加载一个网页,就像它在浏览器中一样:使用System.Windows.Forms
您可以将网页加载到WebBrowser控件中
WebBrowser wb = new WebBrowser(); wb.ScrollBarsEnabled = false; wb.ScriptErrorsSuppressed = true; wb.Navigate(url); while (wb.ReadyState != WebBrowserReadyState.Complete) { Application.DoEvents(); } wb.Document.DomDocument.ToString()
这可能会给你pre ajax DOM,但也许有办法让它先运行ajax.
如果我正确地解释了您的问题,那么您的问题就没有简单的解决方案.
您正在从服务器上抓取HTML,并且由于您的C#代码不是真正的Web浏览器,因此它不会执行客户端脚本.
这样您就无法访问您获取的HTML不包含的信息.
编辑:我不知道这些来自原始网站的AJAX调用有多复杂,但您可以使用Firebug或Fiddler for IE来查看请求是如何进行的,以便在C#应用程序中调用这些AJAX调用.所以你可以添加你需要的信息.但这只是一个理论上的解决方案.