是否有任何免费的API来检查网址(或HTML文档)的关键字密度?我需要它也适用于非英语网址。
这是关键字密度检查器的示例,但没有api: http://tools.seobook.com/general/keyword-density/
如果没有免费的API,C#库也可以作为替代解决方案。
答案 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>|<[^>]+>| ", " ").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元素。
我希望这会有所帮助。