从CSDN博主Jack-Cui学习记录
一、Beautiful Soup简介
简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据。官方解释如下:
Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。
Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个便秘吗方式,这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。
Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为用户灵活地提供不同的解析策略或强劲的速度。
二、实战
1.背景介绍
小说网站-笔趣看:
URL:http://www.biqukan.com/
笔趣看是一个盗版小说网站,这里有很多起点中文网的小说,该网站小说的更新速度稍滞后于起点中文网正版小说的更新速度。并且该网站只支持在线浏览,不支持小说打包下载。因此,本次实战就是从该网站爬取并保存一本名为《一念永恒》的小说,该小说是耳根正在连载中的一部玄幻小说。PS:本实例仅为交流学习,支持耳根大大,请上起点中文网订阅。
2.预备知识
更为详细内容,可参考官方文档:
URL:http://beautifulsoup.readthedocs.io/zh_CN/latest/
a)创建Beautiful Soup对象
如果将上述的html的信息写入一个html文件,打开效果是这样的(<!-注释->为注释内容,不会显示);
同样,我们还可以使用本地HTML文件来创建对象,代码如下:
使用如下代码格式化输出:
b)Beautiful Soup四大对象
Beautiful Soup将复杂HTML文档转换乘一个而复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:
Tag
NavigableString
BeautifulSoup
Comment
(1)Tag
Tag通俗点讲就是HTML中的一个个标签,例如
上面的title就是HTML标签,标签加入里面包括的内容就是Tag,下面我们来感受怎样用Beautiful Soup来方便地获取Tags.。
下面每一段代码中注释部分即为运行结果:
我们可以利用soup加标签名轻松地获取这些标签的内容,是不是感觉比正则表达式方便多了?不过有一点是,它查找的是在所有内容中的第一个符合要求的标签,如果要查询所有标签,我们在后面进行介绍。
我们也可验证一下这些对象的类型:
对于Tag,有两个重要的属性:name和attrs
name
Soup对象本身比较特殊,它的name即为[document],对于其他内部标签,输出的值便为标签本身的名称。
attrs
在这里,我们把a标签的所有属性打印输出了出来,得到的类型是一个字典。
如果我们想要单独获取某个属性,可以这样,例如我们获取a标签的class叫什么,两个等价的方法如下:
网友评论