BeautifulSoup bs4.element.Tag对象的理解
Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种: Tag、 NavigableString、 BeautifulSoup、 Comment。Tag 对象与XML或HTML原生文档中的tag相同,如下所示:
soup = BeautifulSoup('<b class="boldest">Extremely bold</b>')
tag = soup.b
print(type(tag))
# <class 'bs4.element.Tag'>
soup为BeautifulSoup对象,而tag为Tag对象。BeautifulSoup对象表示的是一个文档的全部内容,主要用于初始化加载HTML/XML原生文档。加载完毕之后,再通过搜索文档树获得特定的Tag对象,后续的大部分操作主要是基于Tag对象而非BeautifulSoup对象。官方文档上指出:大部分时候可以把BeautifulSoup对象当作Tag对象。此说法有点误导读者的嫌疑,通常情况下,我们主要是操作Tag对象而非BeautifulSoup对象。