我正在阅读C#中的网站并将内容作为字符串....有些网站没有格式良好的html结构。
我正在使用HtmlAgilityPack,在这种情况下给我提问。
你们可以建议我使用什么,以便它可以读取整个字符串,我可以获得有用的信息吗?
这是我的代码
htmlDoc.LoadHtml(s);
if (htmlDoc.ParseErrors != null && htmlDoc.ParseErrors.Count() > 0)
为什么这个IF条件适用于我的情况
答案 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版本: