1

给定一个 HTML 正文,是否有人编写了任何函数可以自动提取从一大块 HTML 中出现的前 10 个关键字,不包括任何 HTML 标记(即纯文本)?

它应该忽略“and”、“is”、“but”等常用词,但列出最常见的不常用词。

示例输入:

Mary had a <strong>snow</strong> lamb. <img src=lamb.jpg /> The <i>lamb</i> was snow white, it lay in the snow all white.

输出:

Snow (3)
White (2)
Lamb (2)

jquery很好!

4

2 回答 2

2

简而言之:

1)取你身体的innerHTML;

2)去掉所有标点符号和 \n ,这样你就有一个单行字符串;

3) 用 .replace() (/<[^>]*>/g) 去除所有标签;

4) 去除所有常用词 (/\band\b/g, /\bbut\b/g, ...);例如,如果您的无用词是少于 4 个字符的词,则剥离 /\b[.+]{1,3}\b/

  • 现在你应该有一个没有标记和无用词的单行字符串(str)

4a) 可选:如果您不关心 WoRdCAse,只需将全部转换为小写 (str.toLowerCase())

5)在空白处进行拆分(str.split('')),得到一个数组(arr)

6)

var words = {},
        i = arr.length; 

    while(--i) {
       war extWord = arr[i];
       words[extWord] = (!!words[extWord])? words[extWord] + 1 : 1;
    }

7) 做一个 for.. in 循环遍历 (words) 对象以获取 key(单个单词)和 value(该单词的出现次数)

希望这有帮助

于 2010-10-11T17:00:41.650 回答
0

对 Fabrizio 概述的选项和使用 jQuery 进行轻微修改。

//从页面中获取所有文本

var myDocumentText = $("body").text();

myParseText(myDocumentText);

函数 myParseText(myText){

...在此处使用您的逻辑处理文本以不计算和,或等。

}

于 2010-10-11T17:39:32.210 回答