我正在制作一个需要下载整个网站html的UWP C#应用程序。下面的代码能够下载html但是当我查看网站的DOM( F12 on chrome或Edge )时,下载的html缺少某些部分。它不一样。我还在visual studio Html Viewer 上运行了html字符串,它确实缺少了我需要的一些功能。 HttpClient是否存在一些限制,或者有什么我不做的事情?或者通常我无法访问我在浏览器的DOM浏览器中看到的所有部分?谢谢。
Private async Task<string> MakeWebRequest(string url)
{
HttpClient http = new HttpClient();
http.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.57 Safari/537.17");
HttpResponseMessage response = await http.GetAsync(url);
return await response.Content.ReadAsStringAsync();
}
答案 0 :(得分:1)
使用WebView获取网站的HTML(正如我在this回答中提到的)使用以下代码。这将获得所有代码(包括JS)。
WebView webView = new WebView();
public LoadURI()
{
webView.Navigate(new Uri("https://www.bing.com/"));
webView.NavigationCompleted += webView_NavigationCompletedAsync;
}
string siteHtML = null;
private async void webView_NavigationCompletedAsync(WebView sender, WebViewNavigationCompletedEventArgs args)
{
siteHtML = await webView.InvokeScriptAsync("eval", new string[] { "document.documentElement.outerHTML;" });
}
如果它没有获得,那么请等待一段时间然后获取HTML代码
答案 1 :(得分:0)
HttpClient
课程没有任何限制。它正在下载网址,网址与所述网址的网络服务器完全相同。我怀疑你遇到的是与在初始页面加载后动态注入内容的前端Javascript框架有关。 HttpClient
仅下载初始页面。它不执行任何javascript。