Beautiful soup 将复杂的HTML文档转化为一个复杂的树形结构,每个节点都是Python对象,所有对象可以分为四类:Tag类(标签类)、navigableString(可以遍历的字符串类)、Beautifulsoup、comment。
Tag类:
tag类与htnl或XHL中的标签相同,可以作为Beautifulsoup的属性直接访问。
Tag常见的属性和方法:
Tag.name
Tag.attributes
Tag.contents
Tag.children
Tag.descendants
Tag.string
Tag.strings
Tag.stripped_strings
Tag.parent
soup = BeautifulSoup('<b class="boldest">Extremely bold</b>')
tag = soup.b
type(tag)# <class 'bs4.element.Tag'>
Tag有很多属性和方法,其中做重要的有name和attributes.
Name:
每个Tag都有自己的名字,可以通过name访问。
注意:如果改变了name的值,那就影响通过当前解析的的所有html文档。
Attributes:
一个Tag可能有很多属性,tag属性的操作方法与字典相同。可以增加、修改、删除。如果是多值属性,返回的是列表。
Eg: a[‘href’]
NavigaableString(可遍历的字符串):
字符串常包含在Tag内,Beautiful Soup用navigableString来包装string,一个navigableString与python的unicode字符串相同。
Eg: a.string
注意:Tag属性访问是字典方式,而标签之间的字符串访问是点方式。
遍历文档树:
一个tag可能有很多字节点和字符串,可以通过点的方式访问。
搜索文档树:
Soup.find()和soup.find_all()