C# 文本编码比的好算法?
在为my开发函数时,我想了解一些有关我的方法的信息: 我使用HtmlAgiltyPack获取所有文本节点,丢弃那些将脚本和样式标记作为父节点的节点,并执行一些额外的文本操作:C# 文本编码比的好算法?,c#,algorithm,html-parsing,C#,Algorithm,Html Parsing,在为my开发函数时,我想了解一些有关我的方法的信息: 我使用HtmlAgiltyPack获取所有文本节点,丢弃那些将脚本和样式标记作为父节点的节点,并执行一些额外的文本操作: public static int CalculateTextSize(HtmlDocument doc) { int size = 0; foreach (HtmlNode node in doc.DocumentNode.SelectNodes("
public static int CalculateTextSize(HtmlDocument doc)
{
int size = 0;
foreach (HtmlNode node in
doc.DocumentNode.SelectNodes("//text()[normalize-space(.) != '']"))
{
HtmlNode parentNode = node.ParentNode;
if (parentNode != null)
{
if (parentNode.Name.Equals("script",
StringComparison.CurrentCultureIgnoreCase)
|| parentNode.Name.Equals("style",
StringComparison.CurrentCultureIgnoreCase))
{
continue;
}
}
string text = node.InnerText.Trim();
//Just in case agility pack gets it wrong...
text = StringUtils.StripTags(text);
//Replaces "&" => "&" etc.
text = HttpUtility.HtmlDecode(text);
//All whitespace is reduced to single space, i.e.
//"Foo\r\nBar\t\ Hello" => "Foo Bar Hello"
text = StringUtils.NormalizeWhitespace(text);
size += text.Trim().Length;
}
return size;
}
你觉得怎么样?例如,这是一个相当严格的方法
semy方法返回23722,而函数返回28671。我做错了吗
更新:正如Oskar Kjellin所指出的,我在计算字符而不是字节,SeoChat在计算字节。什么是最好的,计算字符还是字节?我认为这个指标不应该受到页面编码的影响 产生差异的原因是他在数字节,而你在数字符 我认为最好的方法是计算字节,因为这样做的原因是为了查看加载页面中有多少百分比是文本。因此,您必须获得加载的总页面大小,并使用它来计算。您不能使用字符计数
不知道搜索引擎是如何做到这一点的,但你的很容易被愚弄。您可以将所有内容放在一个大的文本分区中,然后使用CSS隐藏分区。这取决于您希望的深入程度。这不计算比率,只计算长度。好像他在计算字节,你在计算字符如果你有CalculateTextSize,那么剩下的就微不足道了。我正在计算字符,因为我认为这是一个更好的度量。您使用的编码不应该影响文本与代码的比率?但这当然是造成差异的原因。。。相反,计数字节时我得到了2771(如果我删除了HtmlDecode,我得到2979)很高兴您发现了差异。您还应该使用html中指定的编码。如果对代码使用相同的编码,那么比率不会受到影响(至少可能不会太大),我同意,我现在使用字节。是的,这很容易被愚弄,但它将被用来分析你自己的网站作为一个页面上的指标。谢谢你的意见!