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 でこれを表現する方法を見つけることができませんでした。