尝试使用htmlagiltypack

时间:2015-05-22 08:01:08

标签: c# .net 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 \干线\ HtmlAgilityPack \ HtmlDocument.cs'。   校验和:MD5 {4e 14 d3 b d5 30 6e 2c bf 84 ab 8a 96 82 4a 8f}   文件   D:\ SVN_CHECKOUT \ htmlagilitypack \中继线\ HtmlAgilityPack \ HtmlDocument.cs'   不存在。查看脚本文档   'D:\ SVN_CHECKOUT \ htmlagilitypack \干线\ HtmlAgilityPack \ HtmlDocument.cs' ...   在项目中寻找   'D:\ SVN_CHECKOUT \ htmlagilitypack \干线\ HtmlAgilityPack \ HtmlDocument.cs'。   在项目中找不到该文件。查看目录'C:\ Program   文件(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 \干线\ HtmlAgilityPack \ HtmlDocument.cs。   调试器找不到源文件   D:\ SVN_CHECKOUT \ htmlagilitypack \中继线\ HtmlAgilityPack \ HtmlDocument.cs'。

1 个答案:

答案 0 :(得分:1)

您尝试从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)。