文本到代码比率的好算法?

时间:2011-08-28 09:22:31

标签: c# algorithm html-parsing

在为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;
    }
你怎么看?这是一个非常严格的方法,例如on aftonbladet.se我的方法返回23722而SeoChat tool返回28671.我做错了吗?

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

1 个答案:

答案 0 :(得分:1)

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

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

不确定搜索引擎是如何做到这一点的,但是你的搜索引擎很容易被愚弄。您可以将所有内容放在一个大的文本div中,并使用CSS来隐藏div。这取决于你想要的程度。

相关问题