Эта задача называется
data region mining и является довольно хитрой проблемой, т.к. верстка может быть везде разной, а вы решаете задачу поиска основного контента на сайте(т.е. обрезать рекламу, навигационные блоки, левые вставки, спрятанный контент и прочее)
Вот вам на вскидку алгоритм:
1. Для каждой html ноды в дереве, вычислить её площадь(рендерите через phantom.js и вычисляете площадь через Element.getBoundingClientRect())
2. Удаляете все, что меньше средней площади на этом уровне. (Вычищаем не имеющие значения блоки)
3. Спускаетесь вниз на один уровень и повторяете алгоритм
В результате получите набор текстовых блоков, которые имеют максимальный объем на странице.
Вам нужно будет эмпирически до настроить алгоритм под ваш use case:
Например, если перед вами регион с большим количеством текстовых блоков, то достать текст из всех дочерних и уложить в регион(таким образом мы избегаем вырезки
bold italic текста).
Дальше за вами стоит задача объединить эти регионы в статью/статьи(в случае с лентой).
--------
Существуют и более любопытные алгоритмы по вычислению попарной similarity между произвольными дочерними нодами с целью найти
data region
Но это вам нужно читать опубликовынные статьи на эту тему, например:
dl.acm.org/citation.cfm?id=1060761