在上TextToCodeRatio功能工作我SeoTools Excel Plugin,我想对我的做法有些输入:文本与代码比率的好算法?
我使用HtmlAgiltyPack让所有文本节点,抛弃那些有脚本和样式的标签,父节点和执行一些额外的文字操作:
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;
}
您怎么看?这是一个相当严格的方法,例如在 aftonbladet.se我的方法返回23722而SeoChat tool返回28671.我做错了吗?
UPDATE:正如Oskar Kjellin指出的那样,我正在计算字符而不是字节,而SeoChat正在计算字节数。什么是最好的,计数字符或字节?我认为这个指标不应该受到页面写入的编码的影响。
那不计算比率,只是计数的长度。而且好像他正在计算字节数,你正在计数字符 –
如果你有CalculateTextSize,那么其余的都是微不足道的。我在计算字符数,因为我认为这是一个更好的指标。你使用的编码不应该影响文本与代码的比例? –
但这当然是差异的原因...计数字节,而我得到了我的2771(如果我删除HtmlDecode,我得到2979) –