Сохранить структуру файла html после ее изменения с помощью BeautifullSoup - PullRequest
2 голосов
/ 03 февраля 2012

Я использую python и BeautifullSoup для поиска и замены некоторого текста на html-странице, и моя проблема в том, что мне нужно сохранить структуру файла (отступы, пробелы, новые строки и т. Д.) Без изменений и изменить только нужные элементы. Как мне этого добиться? И str(soup), и soup.prettify() изменяют исходный файл разными способами.

P.S. пример кода:

    soup = BeautifulSoup(text)
        for element in soup.findAll(text=True):
            if not element.parent.name in ['style', 'script', 'head', 'title','pre']:
                element.replaceWith(process(element))
    result = str(soup)

1 Ответ

2 голосов
/ 03 февраля 2012

Я бы сказал, что нет простого пути (или вообще нет). Из документа BeautifulStoneSoup:

__str__(self, encoding='utf-8', prettyPrint=False, indentLevel=0)
    Returns a string or Unicode representation of this tag and
    its contents. To get Unicode, pass None for encoding.

    NOTE: since Python's HTML parser consumes whitespace, this
    method is not certain to reproduce the whitespace present in
    the original string.

Согласно примечанию, оригинальные пробелы теряются для внутреннего представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...