尝试使用htmlagiltypack加载html时出错

.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);调试此代码时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'。

一般承认的答案

您尝试从URI加载html文档是不正确的。

Methof HtmlDocument.LoadHtml从提供的字符串加载html,因此它的参数是html文本本身,而不是URI。

要从提供的URI加载html,您需要以下内容:

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