【问题标题】:how to fix counting the most frequent words in a website如何修复计算网站中最常见的单词
【发布时间】:2019-05-21 16:38:27
【问题描述】:

我有一个程序可以从用户那里获取 url,并在网站上搜索最常见的单词。

    public void url_input_Click(Object sender, EventArgs e)
{
   string StringFromTheInput = TextBox1.Text;
    var request_ = (HttpWebRequest)WebRequest.Create(StringFromTheInput);
    WebResponse response = request_.GetResponse();
    Stream data = response.GetResponseStream();
    string content = String.Empty;

        using (var client = new WebClient())
        {
            content= client.DownloadString(StringFromTheInput);

        }

    WordCount(content);


}

public static Dictionary<string, int> WordCount(string content, int numWords = int.MaxValue)
{
    var delimiterChars = new char[] { ' ', ',', ':', '\t', '\"', '\r', '{', '}', '[', ']', '=', '/' };
    return content
        .Split(delimiterChars)
        .Where(x => x.Length > 0)
        .Select(x => x.ToLower())
        .GroupBy(x => x)
        .Select(x => new { Word = x.Key, Count = x.Count() })
        .OrderByDescending(x => x.Count)
        .Take(numWords)
        .ToDictionary(x => x.Word, x => x.Count);
}

问题是我在函数末尾的“内容”中有什么。 为什么它跳过 linq 行

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:

    我已经测试了这个解决方案,它工作正常。我确实尝试了http://google.com URL。

    调试器不会跳过 LINQ 行,它会执行它,然后通过移动到方法的末尾返回。

    我建议将返回结果添加到变量中,并在最后一个括号处添加断点。

            var result = WordCount(content); 
        } // put a break point here
    

    【讨论】:

    • 谢谢。现在的问题是它给了我网站的 html 而不是内容本身
    • 好的,没问题。我相信 HTML 是网站的内容。如果我的回答有帮助,请采纳。
    • 我会的。我的意思是,如果 url 是文章的,我想要文章中最常用的词。不是页面的html。你知道怎么改吗?谢谢
    • 我是如何获取内容的。检查这篇文章它解释了如何提取内容。它使用与您相同的方法。 :stackoverflow.com/questions/4510212/…
    • 你可以做的是,一旦你检索到内容,提取你感兴趣的部分,然后执行WordCount()方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    相关资源
    最近更新 更多