from bs4 import BeautifulSoup soup = BeautifulSoup(html, 'html.parser') # текст из HTML-документа soup.get_text(sep, strip=False) # текст из HTML-тега `<i>` soup.i.get_text(...)
sep
- строка, используется для объединения текстовых фрагментов;strip=False
- если имеет значение True
, то удалит все пробелы и переносы \n
в конце и начале строки.Метод .get_text()
модуля BeautifulSoup4 возвращает весь текст HTML-документа или HTML-тега в виде единственной строки Unicode:
>>> from bs4 import BeautifulSoup >>> html = '<a href="http://example.com/">\nI linked to <i>example.com</i>\n</a>' >>> root = BeautifulSoup(html, 'html.parser') >>> root.get_text() # '\nI linked to example.com\n' >>> root.i.get_text() # 'example.com'
Можно указать строку, которая будет использоваться для объединения текстовых фрагментов в единую строку:
>>> root.get_text('|') # '\nI linked to |example.com|\n'
Можно сказать BeautifulSoup4 удалять пробелы и переносы строк \n
в начале и конце каждого текстового фрагмента:
>>> root.get_text('|', strip=True) # 'I linked to|example.com'
В случае, если нужно отформатировать/обработать текст самостоятельно, то для его извлечения из HTML-документа можно воспользоваться атрибутом .stripped_strings
(представляет собой генератор):
>>> [text for text in root.stripped_strings] # ['I linked to', 'example.com']
Начиная с версии 4.9.0, в которой используются парсеры lxml
или html.parser
содержание тегов <script>
, <style>
и <template>
не считаются "текстом", так как эти теги не являются частью воспринимаемого человеком содержания страницы.