2011-08-28 43 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

我同意,而现在我正在使用字节。是的,欺骗很容易,但它将用于分析您自己的网站,作为页面指标。感谢您的输入! –