Я пытаюсь разобрать html-документ с помощью .NET WebClient, но символы, которые я получаю, неверны. Я сконфигурировал много кодировок, но я не могу найти, почему я ошибаюсь:Чистая кодировка WebClient не работает
URL-адрес: http://www.vatican.va/archive/ESL0506/__P2.HTM.
Это мой код (вы можете проверить это в ConsoleApp)
static void Main(string[] args)
{
WebClient client = new WebClient();
client.Encoding = Encoding.GetEncoding(28591);
var htmlCode = client.DownloadString("http://www.vatican.va/archive/ESL0506/__P2.HTM");
var splittedHtml = htmlCode.Split('<').ToList();
var htmlVerses = splittedHtml.Where(x => x.StartsWith("p class=MsoNormal align=left")).ToList();
}
Тогда в htmlVerses я получаю строки типа:
"p class=MsoNormal align=left style='margin-left:0cm;text-align:left;\ntext-indent:0cm'>3 Entonces Dios dijo: «Que\nexista la luz». Y la luz existió."
Проверьте эту часть: 3 Entonces Dios dijo: «Que\nexista la luz». Y la luz existió
Its недостаточно хорошо разбирается. Оно должно быть: 3 Entonces Dios dijo: «Que exista la luz». Y la luz existió.
Если мы проверить исходный код хром, мы получаем следующее:
Затем я попытался получить исходный код из http://www.generateit.net/seo-tools/source-viewer/, и я получаю такое же, как и в аномально мой приложение.
Его действительно странно, кодировка, которую использует веб-страница, это charset = iso-8859-1, то же, что и мой веб-клиент.
Любая помощь будет оценена по достоинству.
В качестве бокового узла: не используйте 'htmlCode.Split ('<').'. Используйте настоящий html-парсер, например [HtmlAgilityPack] (http://htmlagilitypack.codeplex.com/) – EZI