我不知道如何将 WebView2 文档加载到 HTML Agility Pack 中。我正在使用 JavaScript 来获取字符串形式的 DOM。但是,当我将 DOM 字符串加载到 HtmlAgilityPack 文档中时,每次尝试解析它都会返回 null。
编译:
string dom = await webView21.CoreWebView2.ExecuteScriptAsync("document.body.outerHTML"); // Get the DOM with JavaScript
if (dom.Contains("div"))
System.Diagnostics.Debug.WriteLine("At least one div in the DOM"); // Prints
HtmlAgilityPack.HtmlDocument htmlDocument = new HtmlAgilityPack.HtmlDocument();
htmlDocument.LoadHtml(dom);
var divs = htmlDocument.DocumentNode.SelectNodes("//div");
if (divs == null)
System.Diagnostics.Debug.WriteLine("divs is null"); // Prints
当我运行此代码片段时,第一个 if 子句确认字符串 dom 至少包含一个 div。但是,当字符串加载到 htmlDocument 中时,第二个 if 子句显示变量 divs 为 null。变量 div 的计数应该至少为 1。我正在做一些愚蠢的事情,但我不知道是什么。
使用 JavaScript 获取 DOM 会在字符串 dom 中留下 unicode 字符,即。 \u003C。获取 DOM 后,可以使用
删除它们dom = System.Text.RegularExpressions.Regex.Unescape(dom);
这回答了问题。
顺便说一句,使用“documentElement”而不是“body”可以获得更多的 dom,即。
string dom = await webView.ExecuteScriptAsync("document.documentElement.outerHTML"); // Get the DOM with JavaScript