в целом - нет ничего невозможного...ну... скажем в случае универсальных - задача сравнима с задачей разбора естественного языка...
нужны всетаки какието признаки, сформулированные из вне. (слова ключевые, еще что-то)...
ну вот например такая мысль:
например нужно выделить области с рекламой на сайте.
есть некотрые признаки, например ключевые слова banner, ad, реклама...
также есть некотрые признаки других областей: новости, меню и подобное..
ищим эти признаки, составляем список всех включений их в документ.
если близко друг от друга(по тексту/DOM) найдено несколько объектов, пологаем что они принадлежат одной структурной единице - блоку рекламы... пытаемся поднятся выше по иерархии и захватить кусок включающий максимум необходимого нам признака, но при этом - минимум лишнего.
или так:
допустим нужно выделить посты на блоге...
каждому посту, независимо от блога характерен набор элементов:
заголовок, дата, автор, содержание, кнопка "читать дальше", кнопка "комментарии"...
такое есть почти везде...
ищим такого рода повторяющиеся структуры в тексте документа... находим и также пытаемся для каждой найти такую иерархическую рамку, которая включила бы максимум нужного, но при этом не захватила бы ненужного...
вообще открытых реализаций таких вещей я никогда не видел,
и думаю это стоит очень солидных денег...
и это фишка таких контор как гугла и яньдексь
встерчный вопрос: где такая задача встала?