2011-08-28 23 views
2

在上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正在計算字節數。什麼是最好的,計數字符或字節?我認爲這個指標不應該受到頁面寫入的編碼的影響。

+1

那不計算比率,只是計數的長度。而且好像他正在計算字節數,你正在計數字符 –

+0

如果你有CalculateTextSize,那麼其餘的都是微不足道的。我在計算字符數,因爲我認爲這是一個更好的指標。你使用的編碼不應該影響文本與代碼的比例? –

+1

但這當然是差異的原因...計數字節,而我得到了我的2771(如果我刪除HtmlDecode,我得到2979) –

回答

1

不同的原因是因爲他正在計算字節數並且您正在計數字符。

我會說最好的是計算字節作爲這樣做的原因是看看有多少百分比的加載頁面是文本。所以你必須加載總頁面大小,並使用它來計算。你不能使用字符數。

不知道搜索引擎是如何做到這一點的,但是你很容易被愚弄。您可以將所有內容放在一個大文本的div中,並使用CSS來隱藏div。這取決於你想成爲多麼徹底。

+0

我同意,而現在我正在使用字節。是的,欺騙很容易,但它將用於分析您自己的網站,作爲頁面指標。感謝您的輸入! –