四大对象种类
BeautifulSoup将复杂HTML文档转换成一个复杂的树形结构。如图所示
每个节点都是Python对象,我们只用根据节点进行查询就可以了,因为解析工作交给了框架本身。所有对象可以归纳为4种:
- Tag
- NavigableString
- BeautifulSoup
- Comment
Tag
什么是Tag,举几个例子
<title>The Dormouse's story</title>
<a class="sister" href="http://example.com/elsie" id="link1">Elsie</a>
上面的title a 等等 HTML 标签加上里面包括的内容就是 Tag。
在前几次的文章中,我们就是通过Tag来获取信息的。
如获得标签<title>
print soup.title
#<title>The Dormouse's story</title>
我们可以利用 bs4加标签名轻松地获取这些标签的内容,比用正则表达式求方便很多。
不过有一点是,它查找的是在所有内容中的第一个符合要求的标签,如果要查询所有的标签,则需要使用find()
和find_all()
(findAll()
)这两个函数,后面两个函数在目前的代码中来看功能和语法是一样的,如果后期有什么区别,我会再返回来讲的。
for item in soup.findAll('a'):
print item,'\n'
print soup.find('a')
print soup.find_all('a', limit = 1)[0]