Сообщить об ошибке.

Метод .get_text() модуля BeautifulSoup4 в Python

Извлечение только текста из HTML-документа или HTML-тега

Синтаксис:

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 в конце и начале строки.

Возвращаемое значение:

  • текст (строка Unicode).

Описание:

Метод .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> не считаются "текстом", так как эти теги не являются частью воспринимаемого человеком содержания страницы.