Beautiful Soup是Python的一个库,最主要的功能是从网页抓取数据。
Beautiful Soup可以提供一些简单的、python式的函数,用来处理导航、搜索、修改分析树等功能。Beautiful Soup是一个工具箱,通过解析文档为用户提供需要抓取的数据。因为简单,所以不需要多少代码,就可以写出一个完整的应用程序。
Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。
Beautiful Soup对象种类
Beautiful Soup将复杂HTML文档,转换成一个复杂的树形结构。每个节点都是Python对象,所有对象可以归纳为4种:Tag、NavigableString、BeautifulSoup、Comment。
(1)Tag
Tag 其实就是HTML 中的一个个标签,比如:
<title>The Dormouse‘s story</title>
<aclass="sister" href="http://example.com/elsie" id="link1">Elsie</a>
上面的title 、a 等等HTML 标签加上里面包括的内容就是Tag
例如:用Beautiful Soup 来获取Tags
print soup.title
print soup.head
print soup.a
print soup.p
print type(soup.a)
print soup.name
print soup.head.name
(2)NavigableString
如果已经得到了标签的内容,要想获取标签内部的文字怎么办?
例如:可以用.string 获取内部文字
print soup.p.string
这样就轻松获取到了标签里面的内容,如果用正则表达式,要复杂很多。它的类型是一个NavigableString,其意思是可以遍历的字符串。
print type(soup.p.string)
(3)BeautifulSoup
BeautifulSoup对象表示的是一个文档的全部内容。很多时候可以把它当作一个特殊的Tag 对象
例如:可以分别获取它的类型,名称,以及属性
print type(soup.name)
print soup.name
print soup.attrs
(4)Comment
Comment对象是一特殊类型NavigableString对象,输出的内容仍不包括注释符号。如果它处理不好,可能会对文本处理造成意想不到的麻烦。
例如:找一个带注释的标签
print soup.a
print soup.a.string
print type(soup.a.string)