Разбор HTML, но с сохранением блочной / встроенной структуры - PullRequest
1 голос
/ 09 декабря 2010

Я хотел бы преобразовать HTML в простой текст, но сохранить минимальную структуру.

  • Все разделы, содержащие материалы, которые должен видеть только браузер, такие как и
  • Конвертируйте все теги блоков в
    , а все встроенные теги - в или , полностью удаляя строки, не покидая пробелов и превращая все, что выделено по уровням блоков, в абзацы с двумя переносами строк.

Идея состоит в том, чтобы превратить случайные веб-страницы во что-то подходящее для обработки текста на естественном языке без артефактов, оставшихся от наивного удаления разметки, искусственно разбивающей слова или делающей несвязанные блоки похожими на предложения.

С любым двоичным файлом, библиотекой или источником на любом языке программирования все в порядке.

Существует ли стандартный источник, предпочтительно машиночитаемый, с полным списком элементов, определяющих, какие из них являются блочными, какие встроенными, а какие похожи на и

Ответы [ 3 ]

1 голос
/ 21 декабря 2010

Список элементов блочного уровня HTML 4 находится здесь: http://htmlhelp.com/reference/html40/block.html

Наиболее популярные библиотеки парсинга HTML для Perl: HTML :: Parser , который является синтаксическим анализатором в стиле SAX, и HTML :: TreeBuilder , который более похож на DOM.

Кроме того, вам придется решить, какие элементы важны, а какие не основаны на том, что вы пытаетесь сделать.

0 голосов
/ 22 декабря 2010

Вот мой собственный инструмент для решения этой проблемы в Perl с использованием HTML :: Parser в качестве github gist: html2txt.pl

Это незаконченное и, возможно, слегка ориентированное на Windows, но я подумала, что поделюсь этим, поскольку несколько человек посмотрели мой вопрос здесь. Не стесняйтесь играть с ним.

0 голосов
/ 17 декабря 2010

Возможно, вы захотите сделать некоторые исследования самостоятельно.Затем, когда вы столкнетесь с проблемой, задайте вопрос, связанный с проблемой.Это больше похоже на спецификацию проекта, который вы хотите, чтобы кто-то сделал для вас.

Для начала, веб-сайты используют теги для всех видов вещей, и проблема очень сложная.Возможно, вы захотите сохранить информацию в тегах h # и p, но вы также можете сохранить информацию тега div, если они используют тег id.Короче говоря, вам нужно было бы написать правила для каждого сайта, с которым вы сталкиваетесь, или использовать какую-то нечеткую логику.

Вместо того, чтобы делать это на основе тегов, почему бы не попробовать определить предложения и грамматику, иливещи, которые могут быть в заголовках, и выбрать теги, которые включают эти вещи, а вычеркивать остальное?

...