下载网站的整个Html UWP C#

时间:2017-06-22 16:13:30

标签: c# html uwp httpclient

我正在制作一个需要下载整个网站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();
    }

2 个答案:

答案 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。