HtmlAgilityPack读取html中的问题

时间:2013-06-18 13:00:22

标签: c# html .net parsing html-agility-pack

我正在阅读C#中的网站并将内容作为字符串....有些网站没有格式良好的html结构。

我正在使用HtmlAgilityPack,在这种情况下给我提问。

你们可以建议我使用什么,以便它可以读取整个字符串,我可以获得有用的信息吗?

这是我的代码

 htmlDoc.LoadHtml(s);
  if (htmlDoc.ParseErrors != null && htmlDoc.ParseErrors.Count() > 0)

为什么这个IF条件适用于我的情况

3 个答案:

答案 0 :(得分:3)

你得到的错误是什么?是抛出异常还是只是想看错误?很难说出你的实际问题是什么。

您可以使用HtmlDoc.ParseErrors属性查看HTML中的标记错误,然后迭代它们。这将为您提供行号,代码和错误类型。

您可以在此处查看有关此属性的更多信息 https://stackoverflow.com/a/5367455/235644

修改

好的,所以自从我的回复以来你已经更新了你的问题。您可以通过循环遍历.ParseErrors来查看在IF语句中返回true的特定错误。

第二次修改

你可以像这样循环错误:

 foreach (var error in htmlDoc.ParseErrors)
 {
      Debug.WriteLine(error.Line);
      Debug.WriteLine(error.Reason);
 }

答案 1 :(得分:0)

您必须修复HTML中的错误,有效后您可以继续操作。 这是同样的问题: Invalid HTML in AgilityPack

答案 2 :(得分:0)

如果你的html是外部的,你无法解决它,你可以先通过一个清理预处理器运行它,然后用HtmlAgilityPack解析它。

这将尝试在HtmlAgilityPack查看之前自动修复尽可能多的问题。最流行的HTML清理工具是Tidy。请参阅此处的.NET版本:

http://sourceforge.net/projects/tidynet/