2

http://lab.arc90.com/experiments/readability/は、雑然とした新聞、雑誌、ブログのページを非常に読みやすい方法で表示するための非常に便利なツールです。これは、いくつかのヒューリスティックを使用して、Web ページの関連するメイン テキストを見つけることによって行われます。そのソース コードは、http://lab.arc90.com/experiments/readability/js/readability.jsでも入手できます。

jQuery を使用して新聞の「本文」を取得するのに苦労していたとき、私の同僚の何人かがこれに注意を向けました。ジャーナル | ブログ | 等のウェブサイト。私の現在のヒューリスティック (および jQuery での実装) は、次のようなものを使用します (これは Firefox Jetpack パッケージ内で行われます)。

$(doc).find("div > p").each(function (index) {  
    var textStr = $(this).text();
/*
     We need the pieces of text that are long and in natural language,
     and not some JS code snippets
    */
if(textStr.length > MIN_TEXT_LENGTH && textStr.indexOf("<script") <= 0) {    
    console.log(index);    
    console.log(textStr.length);
    console.log(textStr);
    $(this).attr("id", "clozefox_paragraph_" + index);
    results.push(index);

    wholeText = wholeText + " " + textStr;
}
});

つまり、「DIV 内の段落を取得して、'script' などの無関係な文字列をチェックする」のようなものです。私はこれを試してみましたが、ほとんどの場合、Web 記事の本文を取得できますが、より優れたヒューリスティックまたはより優れた jQuery 選択メカニズム (およびさらに短い?) が必要です。

より良い提案はありますか?

PS: たぶん、「最も内側の DIV (つまり、DIV タイプの子要素がない) を見つけて、その DIV を取得します。

s only" は、現在の目的にはより良いヒューリスティックですが、jQuery でこれを表現する方法を見つけることができませんでした。

4

2 に答える 2

1

これは通常、ページ上の要素の「リンク密度」を分析することによって行われます。リンク密度が高いほど、コンテンツではない可能性が高くなります。コンテンツ抽出技術とアルゴリズムについて考え始めるのに最適な場所は次のとおりです: http://www.quora.com/Whats-the-best-method-to-extract-article-text-from-HTML-documents

于 2011-09-27T00:00:56.473 に答える
0

ほとんどの記事には長方形のテキスト列があります。要素の次元と要素(子を含む)に含まれる単語の数を組み合わせてみてください。あなたはおそらく狭くて高いdivを好みたいでしょう。

のようなものprobability of main text = (number of words) * (height / width)が良いスタートになるでしょう。

于 2011-03-24T05:19:24.020 に答える