URL关键字密度检查器API

时间:2015-12-25 14:34:13

标签: c# api keyword

是否有任何免费的API来检查网址(或HTML文档)的关键字密度?我需要它也适用于非英语网址。

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

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

1 个答案:

答案 0 :(得分:3)

<强>已更新

继承人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();

然后按键和计数获取distinct关键字,然后按计数排序。

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元素。

我希望这会有所帮助。