У меня есть несколько html-файлов, которые я хочу преобразовать в текст. Я поиграл с BeautifulSoup и добился некоторого прогресса в понимании того, как использовать инструкции, и могу представить HTML и получить обратно текст.
Однако в моих файлах много текста, отформатированного с использованием табличных структур. Например, у меня может быть абзац текста, который находится в теге td в наборе тегов таблицы
<table>
<td> here is some really useful information and there might be other markup tags but
this information is really textual in my eyes-I want to preserve it
</td>
</table>
И затем есть «классические таблицы», которые содержат данные в теле таблицы.
Я хочу иметь возможность применить алгоритм к таблице и установить некоторые правила, которые определяют, будет ли таблица извлечена перед преобразованием документа в текст.
Я выяснил, как получить характеристики моих таблиц, например, чтобы получить количество столбцов в каждой таблице:
numbCols=[]
for table in soup.findAll('table'):
rows=[]
for row in table.findAll('tr'):
columns=0
for column in row.findAll('td'):
columns+=1
rows.append(columns)
numbCols.append(rows)
так что я могу работать с numbCols и использовать длину каждого элемента в списке и значения каждого элемента в списке, чтобы анализировать характеристики моих таблиц и определять те, которые я хочу сохранить или отбросить.
Я не вижу элегантного способа использования этой информации с BeautifulSoup для получения текста. Я думаю, что я пытаюсь получить, предположим, что я анализирую numbCols и решаю, что из десяти таблиц в конкретном документе я хочу исключить таблицы 2, 4, 6 и 9. Таким образом, часть HTML-документа включает в себя все, кроме столы. Как я могу разделить мой суп таким образом?
Решение, которое я нашел, заключается в том, чтобы сначала определить положение каждого из тегов таблицы открытия и закрытия, используя finditer и получение промежутков, а затем сжать промежутки с помощью numbCols. Затем я могу использовать этот список, чтобы разрезать и соединить кусочки моей строки вместе. После этого я могу использовать BeautifulSoup для преобразования html в текст.
Я уверен, что смогу сделать все это в BeautifulSoup. Любые предложения или ссылки на существующие примеры будут отличными. Я должен отметить, что мои исходные файлы могут быть большими, и у меня есть тысячи для обработки.
Не было ответа, но я все ближе