.text и .get_text()



.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 просто возвращает текст в одну строку.



Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: