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)