Ошибка при загрузке html с помощью htmlagiltypack

.net c# html-agility-pack

Вопрос

Я пытаюсь запустить этот код

string path = "http://warisons.rssing.com/chan1729325/all_p43.html";
HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlAgilityPack.HtmlDocument();
htmlDoc.LoadHtml(path);
var div = htmlDoc.DocumentNode.Descendants("div");
foreach (var x in div)
{
    Console.WriteLine(x.Attributes["class"].Value);
}

когда я отлаживаю этот код в htmlDoc.LoadHtml(path); Я получил эту ошибку

Поиск источника для 'd: \ SVN_CHECKOUT \ htmlagilitypack \ Trunk \ HtmlAgilityPack \ HtmlDocument.cs'. Контрольная сумма: MD5 {4e 14 d3 b d5 30 6e 2c bf 84 ab 8a 96 82 4a 8f} Файл 'd: \ SVN_CHECKOUT \ htmlagilitypack \ Trunk \ HtmlAgilityPack \ HtmlDocument.cs' не существует. В документах сценария для d: \ SVN_CHECKOUT \ htmlagilitypack \ Trunk \ HtmlAgilityPack \ HtmlDocument.cs '... Посмотрите в проектах для' d: \ SVN_CHECKOUT \ htmlagilitypack \ Trunk \ HtmlAgilityPack \ HtmlDocument.cs '. Файл не найден в проекте. Просмотр в каталоге 'C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ VC \ crt \ src \' ... Поиск в каталоге 'C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ VC \ crt \ src \ vccorlib \ '... Поиск в каталоге' C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ VC \ atlmfc \ src \ mfc \ '... Поиск в каталоге' C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ VC \ atlmfc \ src \ atl \ '... Поиск в каталоге' C: \ Program Files (x86) \ Microsoft Visual Studio 12.0 \ VC \ atlmfc \ include '... Настройки исходных файлов отладки для активного решения указывают, что отладчик не попросит пользователя найти файл: d: \ SVN_CHECKOUT \ htmlagilitypack \ Trunk \ HtmlAgilityPack \ HtmlDocument.cs. Отладчик не смог найти исходный файл 'd: \ SVN_CHECKOUT \ htmlagilitypack \ Trunk \ HtmlAgilityPack \ HtmlDocument.cs'.

Принятый ответ

Неправильная попытка загрузить html-документ из URI.

Methof HtmlDocument.LoadHtml загружает html из предоставленной строки, поэтому его аргумент представляет собой сам HTML-текст, а не URI.

Чтобы загрузить html из предоставленного URI, вам нужно что-то вроде:

string path = "http://warisons.rssing.com/chan1729325/all_p43.html";
HtmlAgilityPack.HtmlDocument htmlDoc = new HtmlWeb().Load(path);

Также обратите внимание, что вы можете получить NullReferenceException здесь:

x.Attributes["class"].Value

так как вы не проверяете, есть ли атрибут class ( x.Attributes["class"] != null ) перед тем, как получить доступ к его значению.



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow