如何在登录后使用HtmlAgilityPack获取Web内容?

c# html-agility-pack uwp webview

我正在尝试开发一个从我的大学网站获取数据的UWP应用程序

我可以使用WebView登录,现在我尝试提取登录后显示的任何文本

但我尝试使用HtmlAgilityPack提取Web内容,但它改为重定向到登录页面。

这就是我做的

private async void GetInfo(WebView sender, WebViewDOMContentLoadedEventArgs args)
{
     HtmlDocument doc = new HtmlDocument();
     HtmlWeb web = new HtmlWeb();
     doc = await web.LoadFromWebAsync(sender.Source.AbsoluteUri);
     var chunks = new List<string>();
     foreach (var item in doc.DocumentNode.DescendantsAndSelf())
     {
         if (item.NodeType == HtmlNodeType.Text)
         {
             if (item.InnerText.Trim() != "")
             {
                 chunks.Add(item.InnerText.Trim());
             }
         }
     }
}

当我查看Visual Studio时,块列表中的所有文本都来自登录页面之后的登录页面

一般承认的答案

您可以在WebView使用InvokeScriptAsync来获取Html。使用WebView登录后调用以下代码

await webView.InvokeScriptAsync("eval", new string[] { "document.documentElement.outerHTML;" });

欲了解更多信息:
看看这个答案
LogIn到StackOverflow的示例应用程序




许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因