C#比EO.WebBrowser更快地获取javascript DOM

时间:2015-02-23 15:22:55

标签: javascript c# httpwebrequest

我有代码,我使用EO.WebBrowser使用EO.WebView请求从页面获取html:

var cookie = new EO.WebBrowser.Cookie("cookie", "value");
cookie.Path = path;
cookie.Domain = domain;

var options = new BrowserOptions();
options.EnableWebSecurity = false;
Runtime.SetDefaultOptions(options);

var request = new Request(url);
request.Cookies.Add(cookie);

webView.LoadRequestAndWait(request);

最后,我使用以下内容来获取我需要的HTML:

webView.GetDOMWindow().document.body.outerHTML

我的问题是这很慢,虽然我可以让它在本地运行,但我无法让它在Azure服务器代码上运行。有没有办法使用HttpWebRequest做同样的事情?

3 个答案:

答案 0 :(得分:2)

您可以使用JavaScript:

var data = (string)webView.EvalScript("document.body.outerHTML");

答案 1 :(得分:0)

不,HttpWebRequest(和其他类似的“让我回复HTML”)方法只会为您提供HTML本身,并且不会在页面上运行JavaScript。

对于动态HTML的服务器端处理,请考虑使用正确的headless internet browser?而不是试图说服常规IE在没有UI的情况下正常工作。

答案 2 :(得分:0)

eo.webbrowser运行像chrome这样的多进程,并且不受许多云服务环境的支持。

只需使用WebClient或HttpWebRequest或RestSharp等可以执行http请求来获取响应html。