2

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

我正在使用 HtmlAgilityPack 在这种情况下会给我带来问题。

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

这是我的代码

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

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

4

3 回答 3

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);
 }
于 2013-06-18T13:06:24.337 回答
0

您必须修复 HTML 中的错误,在它生效后您可以继续。这是同样的问题: AgilityPack 中的无效 HTML

于 2013-06-18T13:20:16.547 回答
0

如果您的 html 是外部的并且您无法修复它,您可以先通过清理预处理器运行它,然后使用HtmlAgilityPack.

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

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

于 2013-06-18T13:44:41.183 回答