【问题标题】:URL Keyword density checker API [closed]URL关键字密度检查器API [关闭]
【发布时间】:2015-12-25 14:34:13
【问题描述】:

是否有任何免费的 API 可以检查 url(或 html doc)的关键字密度?我也需要它与非英语网址一起使用。

这是关键字密度检查器的示例,但没有 api: http://tools.seobook.com/general/keyword-density/

如果没有免费的 API,C# 库也可以作为我的替代解决方案。

【问题讨论】:

    标签: c# api keyword


    【解决方案1】:

    更新

    这是https://dotnetfiddle.net/g40YQ3

    我不确定是否有免费的 API,但在 C# 中很简单。

    请求 HTML。

    using (WebClient client = new WebClient())
    {
        string html = client.DownloadString("http://stackoverflow.com/").ToLower();
    }
    

    使用正则表达式删除 HTML 元素。您可以修改它以删除其他元素,例如 <style> 元素只需添加 <style[^>]*>[\s\S]*</style>| 字符。

    public static string RemoveHtmlTags(string html)
    {
        string htmlRemoved = Regex.Replace(html, @"<script[^>]*>[\s\S]*?</script>|<[^>]+>|&nbsp;", " ").Trim();
        string normalised = Regex.Replace(htmlRemoved, @"\s{2,}", " ");
        return normalised;
    }
    
    //remove html elements
    html = RemoveHtmlTags(html);
    

    用空格分割字符串

    List<string> list = htmlCode.Split(' ').ToList();
    

    使用正则表达式删除非字母字符 - 可选

    var onlyAlphabetRegEx = new Regex(@"^[A-z]+$");
    list = list.Where(f => onlyAlphabetRegEx.IsMatch(f)).ToList();
    

    更多的黑名单词(大于 2 个字符,不重要等) - 可选

    //add your own
    string[] blacklist = { "a", "an", "on", "of", "or", "as", "i", "in", "is", "to", "the", "and", "for", "with", "not", "by" };
    list = list.Where(x => x.Length > 2).Where(x => !blacklist.Contains(x)).ToList();
    

    然后通过key和count得到distinct关键字,然后按count排序。

    var keywords = list.GroupBy(x => x).OrderByDescending(x => x.Count());
    
    foreach (var word in keywords)
    {
        Console.WriteLine("{0} {1}", word.Key, word.Count());
    }
    

    这是一个非常简单的如何找到关键字密度的例子,可以改进。

    还有一个名为 HtmlAgilityPack 的库,它有助于处理 html 元素。

    我希望这会有所帮助。

    【讨论】:

    • 感谢您的回答。但这有点复杂。像这样的 Html 标签不会忽略:。并且我们还需要提取两个词和三个词的关键字。
    • 我刚刚使用示例链接更新了我的代码。你可以运行它,它将展示如何获得一个简单的 stackoverflow 关键字密度计数。
    • 谢谢尼克!我使用 HtmlAgilityPack,它很棒!您对如何找到 2 个或 3 个单词的关键字有任何想法吗?我必须尝试所有的单词组合?例如:“你好,这是美好的一天”然后我必须检查:“你好这个”、“这是”、“是”、“美好的”、“美好的一天”。
    • 你几乎可以使用上面的代码来做到这一点。取出短语并删除所有非字母字符,然后将字符串拆分为列表。创建一个设置为 false 的标志,使用迭代器在当前位置和迭代器+1 处迭代列表,例如。短语[iterator+1] 并在元素被删除后(在将其拆分为列表之前)将其与提取的 html 字符串匹配。我希望这会有所帮助。如果它有助于您找到解决方案,请接受答案。
    猜你喜欢
    • 1970-01-01
    • 2011-09-03
    • 2014-08-13
    • 1970-01-01
    • 2011-01-05
    • 2021-09-11
    • 2012-05-31
    • 2013-06-15
    • 2019-05-15
    相关资源
    最近更新 更多