bs4 的 Tag 去除 <br> 获取 string

bs4 的 Tag 去除 <br> 获取 string

使用 BeautifulSoup4select 获取到 Tag,但是 Tag.string 返回的是 None

环境:pip install beautifulsoup4 lxml

from bs4 import BeautifulSoup

soup = BeautifulSoup('<p>hello<br></p>', 'lxml')

# 获取 Tag
p_tag = soup.select('p')[0]

print(type(p_tag)) # <class 'bs4.element.Tag'>

# 尝试获取 p 的内容:hello
print(p_tag.string) # None

print(p_tag.contents) # ['hello', <br/>]

print(type(p_tag.contents[0])) # <class 'bs4.element.NavigableString'>

print(type(p_tag.contents[1])) # <class 'bs4.element.Tag'>

字符串常被包含在tag内.Beautiful Soup用 NavigableString 类来包装tag中的字符串:

tag.string
# u'Extremely bold'
type(tag.string)
# <class 'bs4.element.NavigableString'>

一个 NavigableString 字符串与 Python 中的 Unicode 字符串相同,并且还支持包含在 遍历文档树搜索文档树 中的一些特性. 通过 unicode() 方法可以直接将 NavigableString 对象转换成 Unicode 字符串:

unicode_string = unicode(tag.string)
unicode_string
# u'Extremely bold'
type(unicode_string)
# <type 'unicode'>

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×