Beautiifulsoup
Beautiful Soup 是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据。BeautifulSoup 用来解析 HTML 比较简单,API非常人性化,支持CSS选择器、Python标准库中的HTML解析器,也支持 lxml 的 XML解析器。Beautiful Soup 3 目前已经停止开发,推荐现在的项目使用Beautiful Soup 4。
Beautiifulsoup:python语言写的
re:C语言写的
lxml:C语言写的
速度最快的是正则,其次是lxml,最后是Beautifulsoup
安装:
pip install Beautiifulsoup4
四大对象种类
Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:
- Tag
- NavigableString
- BeautifulSoup
- Comment
(1)Tag
Tag 通俗点讲就是 HTML 中的一个个标签。
from bs4 importBeautiifulsoup
html="""
The Dormouse's storyThe Dormouse's story
Once upon a time there were three little sisters; and their names were
Lacie and
and they lived at the bottom of a well.
...
"""
print(soup.p)#
The Dormouse's story
print(type(soup.p))#
我们可以利用 soup 加标签名轻松地获取这些标签的内容,这些对象的类型是bs4.element.Tag。对于 Tag,它有两个重要的属性,是 name 和 attrs.
print(soup.name)#[document] soup 对象本身比较特殊,它的 name 即为 [document]
print(soup.head.name)#head 对于其他内部标签,输出的值便为标签本身的名称
print(soup.p.attrs)#{'class': ['title'], 'name': 'dromouse'}
print(soup.p['class']) #取出标签的属性
print(soup.p.get('class') #取出标签的属性,找不到返回None#['title']
print(soup.a.text) #等于print(soup.a.get_text()) 取出标签下的文本内容
(2) NavigableString
NavigableString简单来讲就是一个可以遍历的字符串。
例如:
print(soup.p.string)#The Dormouse's story
print(type(soup.p.string))#
(3)BeautifulSoup
BeautifulSoup 对象表示的是一个文档的全部内容.大部分时候,可以把它当作 Tag 对象,是一个特殊的 Tag,我们可以分别获取它的类型,名称,以及属性来感受一下
printtype(soup.name)#
printsoup.name#[document]