请选择 进入手机版 | 继续访问电脑版
在线投稿 文字标题 文字标题 文字标题 文字标题 文字标题
切换皮肤
?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0414%2F96e39ff4j00q8r4mf0010d000mv00bkp.jpg

1 BeautifulSoup库简介
BeautifulSoup是python的一个库,其提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。
BeautifulSoup4和 lxml 一样,Beautiful Soup 也是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据。
Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。BeautifulSoup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,如果我们不安装它,则 Python 会使用 Python默认的解析器,lxml 解析器更加强大,速度更快,推荐使用lxml 解析器。
2BeautifulSoup主要解析器及其优缺点
?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0414%2F58b5c6cfp00q8r49d000qc000qk008nm.jpg
3创建BeautifulSoup对象
首先需要从bs4模块中引入BeautifulSoup库,然后创建一个html式字符串来代替网页html内,最后,以html式字符串为解析内容,以python内置的html.parser解析器,便可创建出BeautifulSoup对象,代码如下:
?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0414%2F66cc08a7p00q8r49d001bc000r500cqm.jpg
其中,prettify方法是将内容格式化输出,输出如下:
?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0414%2F3e88c356p00q8r49d001ec000n500oum.jpg
4四大对象种类
BeautifulSoup能够将复杂的HTML转换成为一个复杂的树形结构,其中每个节点都是python对象,所有这些对象可以分类4大类,分别为:
Tag
NavigableString
BeautifulSoup
Comment
(1)Tag
Tag就是HTML中的一个个标签,如a标签、title标签等,具体的tag就是一个包含内部内容的整个标签对,如下:
?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0414%2F39106dd1p00q8r49d000bc000dt003bm.jpg
输出为:
?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0414%2F9486d05dp00q8r49d000ec000ot002gm.jpg
是不是这样获取标签内容要比正则表达式方便多了,但其返回的是第一个符合要求的标签。
对于Tag,其有两个属性name和attrs,先看name:
?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0414%2Fd6f415abp00q8r49d000ac000dr002jm.jpg
输出为:
可见soup对象是一个文档,head标签的name属性值就是head,就是标签本身。
再看其attrs属性:
输出为:
可见,标签的attrs值是一个字典类型,具体就是该标签的所有属性值。
(2)NavigableString
利用标签的attrs参数可以获得标签的属性内容,那标签对内部的内容怎么获取那?其实非常简单,只需要在标签加.string就可以啦,如下:
?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0414%2F134fe406p00q8r49d000ac000dx002hm.jpg
输出:
可见.string值的类型是一个NavigableString对象。
(3)BeautifulSoup对象
BeautifulSoup对象表示的是一个文档的内容。大部分时候,可以把它当作 Tag 对象,是一个特殊的 Tag,我们可以分别获取它的类型,名称,以及属性,如下:
?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0414%2F9ed935b9p00q8r49d000cc000e80035m.jpg
输出为:
?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0414%2F41eabdf8p00q8r49d0002c0007u002gm.jpg
(4)Comment
Comment 对象是一个特殊类型的 NavigableString 对象,其实输出的内容是不包括注释符号,以下面带注释的标签为例:
?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0414%2F16b5df7ep00q8r49d000cc000d30039m.jpg
输出为:
?url=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0414%2F5378413bp00q8r49d000cc000rs002fm.jpg
可见a标签中包含的内容时一个注释,但.string的值确实不带有注释符号,其类型为Comment。
下篇待续...

回复

使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则


    Archiver|手机版|小黑屋|齐聚无忧 |网站地图

    Powered by Discuz! X3.4  © 2001-2013 Comsenz Inc.