Атрибут text
может давать только текст, как он есть.
Принимая во внимание, что get_text()
может выполнять некоторую «настройку».Как вставка разделителя между текстом различных тегов или удаление пробелов с концов строк.
get_text()
принимает следующие параметры:
separator
: вставить строку в качестве разделителя между текстами отдельных тегов. strip
: зачистить концы текстов тегов от пробелов.
Рассмотреть
html_str = """
<div>
\nHello
<span>World!</span>
<a href="">Click here</a>
</div>
"""
soup = BeautifulSoup(html_str, 'html.parser')
Если мы рассмотрим текст тега <div>
как
soup.text
, это будет
'\n\n\nHello\n World!\nClick here\n\n'
Если используется аргумент strip
>>> soup.get_text(strip=True)
'HelloWorld!Click here'
Если используется separator
аргумент
>>> soup.get_text(separator='**')
'\n**\n\nHello\n **World!**\n**Click here**\n**\n'
Если используются оба separator
и strip
>>> soup.get_text(separator='**', strip=True)
'Hello**World!**Click here'
Время выполнения примерно равното же самое.
%timeit soup.text
4.16 µs ± 56.8 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%timeit soup.get_text(strip=True)
5.38 µs ± 154 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%timeit soup.get_text(separator='**')
4.16 µs ± 53.7 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
%timeit soup.get_text(separator='**', strip=True)
5.45 µs ± 213 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)