HtmlAgilityPack读取html时的问题

本文关键字:问题 html 读取 HtmlAgilityPack | 更新日期: 2023-09-27 18:18:48

我正在阅读c#网站并获得内容为字符串....有一些网站没有良好的HTML结构。

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

你能建议我用什么,这样它可以读取整个字符串,我可以得到有用的信息?

我的代码

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

为什么这个IF条件对于我的情况是真的

HtmlAgilityPack读取html时的问题

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

您可以通过使用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);
 }

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

无效HTML

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

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

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