http://lab.arc90.com/experiments/readability/ - очень удобный инструмент для удобного просмотра загроможденных газет, журналов и блогов. Это делается с помощью эвристики и поиска соответствующего основного текста веб-страницы. Его исходный код также доступен на 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;
}
});
Так что это что-то вроде "возьми абзацы внутри DIVs и проверь на наличие не относящихся к делу строк, таких как" script "". Я пробовал это, и большую часть времени он может захватить основной текст веб-статей, однако я хотел бы иметь лучшую эвристику или, возможно, лучший механизм выбора jQuery (и даже короче?).
У вас есть лучшие предложения?
PS: Может быть, "Найти самые внутренние DIV (то есть без дочерних элементов типа DIV) и взять их только
s" было бы лучшей эвристикой для моей текущей цели, но я не мог найти, как выразить это в JQuery.