Разбор веб-страниц через C #, XmlDocument.LoadXml - PullRequest
2 голосов
/ 16 декабря 2011

Я пытаюсь загрузить веб-страницу и разобрать ее. Мне нужно добраться до каждого узла HTML-документа. Поэтому я использовал WebClient для загрузки, которая работает отлично. Затем я использую следующий сегмент кода для разбора документа:

 WebClient client = new WebClient();

 Stream data = client.OpenRead("http://web.cs.hacettepe.edu.tr/~bil339/");
 StreamReader reader = new StreamReader(data);
 string xml = reader.ReadToEnd();

 data.Close();
 reader.Close();
 XmlDocument xmlDoc = new XmlDocument();
 xmlDoc.loadXml(xml);

В последней строке программа некоторое время ждет, а затем вылетает. Он говорит, что в HTML-коде есть ошибки, этого не ожидалось, его не должно быть здесь и т. Д Любые предложения, чтобы это исправить? Другие методы для анализа HTML-кода приветствуются (в C #, конечно.)

1 Ответ

7 голосов
/ 16 декабря 2011

Используйте HTMLAgilityPack для анализа HTML.Правильно сформированный HTML не является XML и не может быть проанализирован как таковой.Например, в нем отсутствует преамбула <?xml version="1.0" encoding="UTF-8"?>, которая требуется для всех файлов XML.HTML Agility Pack более щадящий.

...