Какие алгоритмы я могу использовать для идентификации контента на веб-странице?
-
22-09-2019 - |
Вопрос
У меня есть веб-страница, загруженная в браузер (т.е.мне доступны его DOM и позиционирование элемента), и я хочу найти блочный элемент (или отсортированный список этих элементов), который, вероятно, содержит большую часть контента (как в непрерывном блоке текста).Цель состоит в том, чтобы исключить такие элементы, как меню, верхние и нижние колонтитулы и тому подобное.
Решение
Это мой личный фаворит: VIP-персоны:Алгоритм сегментации страниц на основе визуального представления
Другие советы
Во-первых, если вам нужно проанализировать веб-страницу, я бы использовал HTMLAgilityPack чтобы преобразовать его в XML.Это ускорит все и позволит вам, используя простой XPath, перейти непосредственно к BODY.
После этого вам нужно запустить все элементы DIV (вы можете получить все элементы DIV в списке из пакета Agility) и получить все, что захотите.
Для этого существует простой метод, основанный на анализе того, насколько «зашумлен» HTML, т. е. каково соотношение разметки и текста, отображаемого на HTML-странице. Простой способ извлечь полезный текст из произвольного HTML описывает этот текс, давая для иллюстрации некоторый код Python.
См.так же HTML::ContentExtractor Perl-модуль, реализующий эту идею.Если вы хотите использовать это, имело бы смысл сначала очистить HTML, используя beautifulsoup.
Я бы порекомендовал диссертацию Вита Байсы на тему Очистка веб-контента, Я думаю, у него тоже есть какой-то код, но я не могу найти на него ссылку.Существует также обсуждение той же проблемы в блоге LingPipe по обработке естественного языка.