.text
.text – свойство, которое позволяет получить доступ ко всему тексту внутри элемента, включая все доступные дочерние элементы. При этом текст возвращается в виде одной непрерывной строки.
Стоит учитывать, что .text не обладает такой гибкостью, как .get_text(). Отсутствую дополнительные параметры для настройки режима извлечения текста.
from bs4 import BeautifulSoup # Пример HTML-строки html_string = """ <div> <p>Первый абзац.</p> <p>Второй абзац <span>со вложенным</span> текстом.</p> </div> """ # Создание объекта BeautifulSoup soup = BeautifulSoup(html_string, 'html.parser') # Использование .text для извлечения всего текста из div div_text = soup.find('div').text print(div_text)
.get_text()
Метод также возвращает текст внутри элемента, но при этом предоставляется больше опций. Дополнительно можно настроить особенности извлечения и объединения информации. К примеру, можно сразу указать разделитель для текста из дочерних элементов и применить параметр strip для удаления пробелов в начале и конце строки:
.get_text(separator=" ", strip=False, types=default)
Важно понимать, что разделитель добавляется между каждым блоком текста, который был извлечен из различных тегов, включая текст, который может быть окружен пробельными символами или переносами строк.
<div> <div> <p>Первый абзац.</p> <p>Второй абзац.</p> </div> </div>
При вызове вызове get_text(separator=» | «) вернется следующая конструкция:
| | Первый абзац. | | Второй абзац. | |
types=default – данный параметр позволяет ограничить типы объектов, из которых извлекается текст. Применяется достаточно редко, однако может возникнуть ситуация, когда необходимо извлечь текст только из определенных тегов.
from bs4 import BeautifulSoup # Тот же пример HTML-строки html_string = """ <div> <p>Первый абзац.</p> <p>Второй абзац <span>со вложенным</span> текстом.</p> </div> """ # Создание объекта BeautifulSoup soup = BeautifulSoup(html_string, 'html.parser') # Использование .get_text() с параметром separator div_text = soup.find('div').get_text(separator=" | ") print(div_text)
Вывод:
| Первый абзац. | | Второй абзац | со вложенным | текстом. |
Ключевые отличия
Способ использования. .text – это свойство, а .get_text() – метод. Поэтому во втором случае появляются возможности принимать параметры настройки результата. .text просто возвращает текст в одну строку.