Лучший отвечающий
Ошибка парсинга в Html Agility Pack

Вопрос
-
Добрый день!
Как правильно сохранить страницу через WebBrowser (WPF) на жесткий диск, чтоб её потом можно было открыть для парсинга через Html agility pack?
На данный момент делаю вот так:
Сохраняю:
dynamic doc = browser.Document; var text = doc.documentElement.InnerHtml; StreamWriter sw = new StreamWriter(@cPage, false, System.Text.Encoding.UTF8); sw.Write(text); sw.Close();
Подгружаю, но срабатывает исключение ошибки парсинга:
HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument(); htmlDoc.OptionFixNestedTags = true; htmlDoc.Load(file); if (htmlDoc.ParseErrors != null && htmlDoc.ParseErrors.Count() > 0) { MessageBox.Show("Ошибка парсинга","Во время выполнения парсинга файла", MessageBoxButton.OK, MessageBoxImage.Error); } else { if (htmlDoc.DocumentNode != null) { //действие } }
что я делаю не так?
- Изменено YatajgaModerator 22 июня 2014 г. 15:01 Title
22 июня 2014 г. 14:14
Ответы
-
Проблема решена добавлением опции:
htmlDoc.OptionReadEncoding = false;
Всем спасибо!
- Предложено в качестве ответа YatajgaModerator 22 июня 2014 г. 15:23
- Помечено в качестве ответа YatajgaModerator 22 июня 2014 г. 15:26
22 июня 2014 г. 15:21
Все ответы
-
Для начала попробуйте просто открыть сохранённый файл браузером. Посмотрите открывается ли. Если нет, то проблема в записи.
Сделаем содержимое сообщества лучше, вместе!
22 июня 2014 г. 14:23Модератор -
Открывается, проблем не возникает (открываю Яндекс бровсером)22 июня 2014 г. 14:44
-
Тогда посмотрите в отладчике, какие конкретные ошибки содержатся в объекте ParseErrors.
Сделаем содержимое сообщества лучше, вместе!
22 июня 2014 г. 14:47Модератор -
22 июня 2014 г. 14:55
-
Более детально. Запустите программу в режиме отладки, поставьте на этой строке точку останова, потом наведите на неё. И посмотрите что конкретно содержится в объекте.
Сделаем содержимое сообщества лучше, вместе!
22 июня 2014 г. 14:59Модератор -
22 июня 2014 г. 15:08
-
Уже понятно. Проблема у вас с кодировкой. У вас сохраняется юникод, на странице выставлена другая. И от этого ошибка, скорее всего. Вам нужно убрать эту строку при загрузке и сохранении. Или выставить кодировку в Agility Pack, у метода Load насколько я знаю есть перегруженная версия. Или такое, более тяжёлое решение.
Сделаем содержимое сообщества лучше, вместе!
22 июня 2014 г. 15:19Модератор -
Проблема решена добавлением опции:
htmlDoc.OptionReadEncoding = false;
Всем спасибо!
- Предложено в качестве ответа YatajgaModerator 22 июня 2014 г. 15:23
- Помечено в качестве ответа YatajgaModerator 22 июня 2014 г. 15:26
22 июня 2014 г. 15:21