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条件对于我的情况是真的
你得到的错误是什么?是抛出异常,还是只是想查看错误?很难说你真正的问题是什么。
您可以通过使用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是外部的,你不能修复它,你可以先通过一个清理预处理器运行它,然后用HtmlAgilityPack
解析它。
这将尝试在HtmlAgilityPack
看到它之前自动修复尽可能多的问题。最流行的HTML清理工具是Tidy。在这里查看.NET版本: