【问题标题】:Good algorithm for text to code ratio?文本与代码比率的好算法?
【发布时间】:2011-08-28 09:22:31
【问题描述】:

在为我的SeoTools Excel Plugin 处理TextToCodeRatio 函数时,我想对我的方法提出一些意见:

我正在使用 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。我做错了吗?

更新:正如 Oskar Kjellin 所指出的,我计算的是字符而不是字节,而 SeoChat 计算的是字节。什么是最好的,计算字符或字节?我认为这个指标不应该受到页面所写编码的影响。

【问题讨论】:

  • 那不计算比率,只计算长度。而且好像他在计算字节,你在计算字符
  • 如果你有CalculateTextSize,那么剩下的就很简单了。我正在计算字符,因为我认为这是一个更好的指标。您使用的编码不应影响文本与代码的比率?
  • 但这当然是造成差异的原因... 计数字节而不是我的 2771(如果我删除 HtmlDecode,我得到 2979)
  • 很高兴您找到了差异。您还应该使用 html 中指定的编码。如果您对代码使用相同的编码,那么比率不会受到影响(至少可能不会那么大)

标签: c# algorithm html-parsing


【解决方案1】:

差异的原因是因为他在计算字节,而你在计算字符。

我会说最好是计算字节数,因为这样做的原因是查看加载页面中有多少百分比是文本。所以你必须得到加载的总页面大小,并用它来计算。您不能为此使用字符数。

不知道搜索引擎是如何做到这一点的,但你的很容易被愚弄。您可以将所有内容放在一个大的文本 div 中,然后使用 CSS 隐藏该 div。这取决于你想做到多彻底。

【讨论】:

  • 我同意,我现在改用字节。是的,这很容易被愚弄,但它会被用来分析您自己的网站作为页面指标。感谢您的意见!
猜你喜欢
  • 1970-01-01
  • 2019-09-12
  • 2019-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多