C# 获得 javascript DOM 比 EO.WebBrowser 更快的方法
C# Faster way to get javascript DOM than EO.WebBrowser
我在使用 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 做同样的事情?
不,HttpWebRequest
(和其他类似的 "get me HTML response")方法只会给您 HTML 本身,不会在页面上 运行 JavaScript。
对于动态 HTML 的服务器端处理,考虑使用适当的 headless internet browser? 而不是试图说服常规 IE 在没有 UI.
的情况下正常工作
您可以使用 JavaScript:
var data = (string)webView.EvalScript("document.body.outerHTML");
eo.webbrowser 像 chrome 一样运行多进程,并且不受许多云服务环境的支持。
只需使用 WebClient 或 HttpWebRequest 或 RestSharp 或类似的东西可以做 http 请求来获得响应 html。
我在使用 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 做同样的事情?
不,HttpWebRequest
(和其他类似的 "get me HTML response")方法只会给您 HTML 本身,不会在页面上 运行 JavaScript。
对于动态 HTML 的服务器端处理,考虑使用适当的 headless internet browser? 而不是试图说服常规 IE 在没有 UI.
的情况下正常工作您可以使用 JavaScript:
var data = (string)webView.EvalScript("document.body.outerHTML");
eo.webbrowser 像 chrome 一样运行多进程,并且不受许多云服务环境的支持。
只需使用 WebClient 或 HttpWebRequest 或 RestSharp 或类似的东西可以做 http 请求来获得响应 html。