Разберите файл HTML и сохраните заголовки <h1> и подзаголовок <h2>, а текст, содержащийся под ними, в другом каталоге файлов (Python) - PullRequest
0 голосов
/ 27 мая 2020

Итак, у меня есть эта длинная HTML страница. Я фактически преобразовал свой документ .docx в HTML, потому что я хочу, чтобы все заголовки и подзаголовки сохранялись в отдельных файлах, потому что позже я хотел бы воспроизвести тот же файл (но удалив некоторый контент или около того), поэтому моя идея что я проанализирую HTML один раз и сохраню все его заголовки и подзаголовки один раз, и в качестве требования я буду извлекать только те, которые необходимы.

Может ли кто-нибудь подсказать мне, какую библиотеку использовать или есть ли более простой и умный способ, о котором я могу не знать? Пожалуйста, помогите мне.

Большое спасибо.

Пример можно увидеть как:

`1    INTRODUCTION

      1.1  Purpose
           Some text for purposes

      1.2  Terminology
            Some text for Terminology

2    TESTING

      2.1  Dependencies
           Some text some text some text

     2.2  Testing Components
           Some text some text some text

     2.3   Test Architecture
           Some text some text some text  

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

  `/home/user/Projects/HTML_Parser
     ├── main.py/
     │   ├── __init__.py
     │   ├── db.py
     │   ├── schema.sql
     │   ├── auth.py
     │   ├── blog.py
     │   ├── templates/
     │   └── static/
     │       └── style.css
     ├── 1.INTRODUCTION/
     │   ├── 1.1Purpose
     │   └── 1.2Terminology
     └── 2.TESTING
     │   ├── 2.1Dependencies
     │   └── 2.2TestingComponents
     └── 2.3TestArchitecture `

1 Ответ

1 голос
/ 27 мая 2020

Я бы предположил, что преобразование docx в html не является правильным подходом для извлечения заголовков и подзаголовков из моего опыта. Поскольку мы имеем дело с неструктурированными документами (.docx), созданными разными авторами, не существует специфического c или определенного способа идентификации подзаголовка под заголовком, если только автор явно не определяет его как подзаголовок при создании документ.

В некоторых случаях авторы могут выбрать определение заголовка как форматирование Normal и Bold вместо того, чтобы определять его как Heading, а в некоторых случаях автор может решить определить его как сам Heading.

Короче говоря, вы сможете идентифицировать заголовки и подзаголовки, только если автор выполнил их правильное форматирование при создании документа. Я встречал много случаев, когда такое форматирование не выполняется например, Heading может быть создано автором как тип Heading, тогда как подзаголовок будет типом Normal с примененным Bold к нему. Следовательно, вы сможете найти заголовки и подзаголовки только при правильном форматировании, например, размер подзаголовков меньше, чем размер заголовков во всех случаях.

Даже для таких случаев я бы рекомендовал использовать пакет python-docx непосредственно в самом .docx, поскольку он может извлекать заголовки и подзаголовки, если они определены автором с правильным форматированием.

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

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

Обновление: Как я вижу, поскольку в ваших документах есть Таблица содержания (To C), вы можете напрямую извлечь В C либо из html, либо из docx и выполнить некоторую структуризацию после извлечения. Это лучший способ, который я мог придумать.

  1. Для извлечения To C из html вы можете использовать Beautifulsoup для извлечения части To C из html и затем структурируйте извлечения
  2. Для извлечения в C из docx вы можете использовать эту ссылку

Ура!

...