Сайты сейчас делятся на две категории:
1) сайты с server side rendering, которые можно отлично парсить из html (1 CPU-ядро секунда на страницу)
2) сайты с client side rendering, которые можно отлично парсить из selenium like (1-2 CPU-ядро минута на страницу). Берём DOM, сохраняем в файл как html, и парсим ровно так же, как в случае (1).
3) Бывают очень редкие исключения, которые можно/нужно парсить как скриншот.
---
При этом общих алгоритмов получения body content достаточно мало, их надо подстраивать под сайт, иначе получаем точность уровня 95-97% для новостей (коммерческие репортят ближе к 99%, по сути они сделали донастройку для кучи сайтов). Слова и предложения все обычно выделяются правильно, 3-5% -- это мусор по краям или случаи выпадения части контента из-за неправильного алгоритма. Очень редко это мусор от рекламы или каких-то других вставок внутри. У тех же биржевых тикеров нормально получаются текстовые версии обычно, часто они помечены как ссылка, и так их даже проще выделить из текста.