四大对象种类
BeautifulSoup将复杂的html文档转换成一个复杂的树形结构,每个节点都是python对象,所有的对象可归纳为4种
1、tag
tag是什么,通俗点讲,就是html中的一个标签例如
<title>The Dormouse's story</title>
<a class='sister' herf='http://example.com/elsie' id = 'link1'>Elsie</a>
上面的title,a等等html标签加上里面包括的内容就是tag,BeautifulSoup可以方便的获取tags
注意:我们可以用soup加标签名轻松地获取标签内容。不过有一点是,它查找的是在所有内容的第一个符合要求的标签,如果要查询所有的标签则要用其他的方法。
tag有两个重要的属性,name,和attrs
print soup.name
#[document]
print soup.head.name
#head
soup对象本身比较特殊,他的name即为[doucument],对于其他内部标签,输出的值便为标签本身的名称。
print soup.p.attrs
#{'class': ['title'], 'name': 'dromouse'}
在这里我们把p标签的所有属性都打印出来,得到的是一个字典。这里获取内部属性的和字典一摸一样。可以修改,删减,和字典操作一样的。
2、NavigableString
既然我们已经得到了标签的内容,那么问题来了,我们想要获取内部的文字该怎么办呢?很简单,用 .string即可,例如:
>>>print(soup.p.string)
>>>The Dormouse's story
这样我们就轻松地取到了标签里面的内容,NavigableString翻译过来是可遍历的字符串。
3、BeautifulSoup
BeautifulSoup对象表示的是一个文档的全部内容,大部分时候,可以把它当作tag对象,是一个特殊的tag,
我们可以分别获取它的类型、名称。
4、Comment
commnet对象是一个特殊类型的navigablestring对象,其实输出的内容仍然不包括注释符号。