2017-01-17 2 views
0

Я пытаюсь получить доступ к контенту веб-сайта, используя следующий код:Извлечение веб-сайт обычный HTML

HttpClient httpClient = new HttpClient(); 
string htmlresult = ""; 

var response = await httpClient.GetAsync(url); 

if (response.IsSuccessStatusCode) 
{ 
    htmlresult = await response.Content.ReadAsStringAsync(); 
} 

return htmlresult; 

Это дает мне право HTML для https://www.yahoo.com кроме, который дает мне, возможно, зашифрованную строку вместо обычного HTML, что-то вроде ниже.

‹  Ľç–ãF¶.øÿ<»Ž4Kj“ð¦ÔÒ½÷ž·îÊO0$ Úž~÷ [email protected]™U:ëNgK"bÛÄïÿõr¯4^ô 

Как я могу получить простой html из этого зашифрованного текста?

+1

Вы уверены, что это не просто сжатый или закодированный? Yahoo использует 'Accept-Encoding: gzip, deflate, br' –

+0

Это правильный ответ –

ответ

2

Yahoo использует Accept-Encoding: gzip, deflate, br, поэтому содержание в вашем случае g-zipped. Быстрое исправление кода - Включить автоматическую декомпрессию:

private async Task<String> GetUrl(string url) 
{ 
    HttpClientHandler handler = new HttpClientHandler() 
    { 
     AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate 
    }; 

    HttpClient httpClient = new HttpClient(handler); 

    string htmlresult = ""; 

    var response = await httpClient.GetAsync(url); 

    if (response.IsSuccessStatusCode) 
    { 
     htmlresult = await response.Content.ReadAsStringAsync(); 
    } 

    return htmlresult; 
} 
Смежные вопросы