在上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) –