Я думаю, что самым простым способом было бы найти самый большой блок текста без разметки. Затем, как только он будет найден, определите его границы и извлеките его. Возможно, вы захотите исключить некоторые теги из ссылок, не связанных с разметкой, например ссылки и изображения, в зависимости от того, на что вы ориентируетесь. Если это будет иметь интерфейс, возможно, включите список флажков тегов, которые нужно исключить из поиска.
Вы также можете найти самый низкий уровень в дереве DOM и выяснить, какой из этих элементов является самым большим, но это не сработает на плохо написанных страницах, так как дерево dom часто ломается на таких страницах. Если вы в конечном итоге воспользуетесь этим, я придумаю какой-нибудь способ узнать, не перешел ли браузер в режим причуд, прежде чем пытаться это сделать.
Вы также можете попытаться использовать несколько из этих проверок, а затем придумать метрику для выбора наилучшего. Например, все еще попробуйте использовать мой второй вариант выше, но дайте его результату более низкий «рейтинг», если браузер будет нормально переходить в режим причуд. Очевидно, что это повлияет на производительность.