0. 前言
爬虫是一个非常有意思的东西,比如自己做的一个网页上面什么数据都没有就可以爬虫别人的 然后进行去重 数据分析等等 在这里因为爬虫涉及到的方面非常多
1. Beautiful Soup的简介
先来了解下,Beautiful Soup是python的一个库,是一个框架,并且是第三方的所以西药安装,最主要的功能是从网页抓取数据。官方解释如下:
2. Beautiful Soup 安装
现在通常使用的版本基本上都是Beautiful Soup4 之前的版本已经被移植了过来,也就是说我们需要导入的事import bs4.我们这里版本所介绍的事Beautiful Soup 4.3.2(BS4) 需要了解的是bs4对py3的版本支持不是特别友好,现在也已经慢慢在过度到py3还没有完全实现这个过程,如果需要使用py3的通过可以下载bs3的版本会好一些
pip进行安装或easy_install进行安装
离线下载安装:
#BS3
https://www.crummy.com/software/BeautifulSoup/bs3/download//
#BS4
https://www.crummy.com/software/BeautifulSoup/bs4/download/
最新版本是BS4.6 今年五月份发布的 官网 https://www.crummy.com/software/BeautifulSoup/
下载完成之后解压
运行下面的命令即可完成安装
然后需要安装 lxml
一般情况下 lxml安装会出现一些问题导致安装不上 所以会去现在whl离线包或源码来进行安装,另外解释器是纯Python实现的HTML5lib,解析方式和浏览器相同,会自动补全结束标签 等等 一系列的渲染操作,可以进行选择性的安装 类似于一个工具更加方便操作不使用它也是可以的
除此之外BS支持python标准库中的HTML解析器,支持第三方的解析器,如果想要放弃它,python会使用默认的解析器,lxml解析器使用起来速度更快,更加方便与强大。
3. 开始Beautiful Soup的旅程
以上工作准备之后就可以开启深渊之旅了
4. 创建Beautiful Soup对象
首先导入BS4的库
from bs4 import BeautifulSoup
这里我们创建一个字符的HTML节点代码,以供后面的例子使用
创建BS对象
当然可以使用loca本地的HTML文件来进行创建,比如
上面这句代码便是将本地 index.html 文件打开,打开之后创建一个BS实例对象以供后面调用。
来试着输出打印一下 soup 对象的内容
#输出
上面 prettify()这个格式化函数会常常用
5. 四大对象种类
Beautiful Soup将复杂HTML文档转换成一个复杂的树形结构,每个节点都是Python对象,所有对象可以归纳为4种:
-
Tag
-
NavigableString
-
BeautifulSoup
-
Comment
下面我们进行一一介绍
(1)Tag
Tag 是什么?通俗点讲就是 HTML 中的一个个标签,例如
上面的 title a 等等 HTML 标签加上里面包括的内容就是 Tag,下面我们来感受一下怎样用 Beautiful Soup 来方便地获取 Tags
下面每一段代码中注释部分即为运行结果
我们可以利用 soup加标签名轻松地获取这些标签的内容,是不是感觉比正则表达式方便多了?不过有一点是,它查找的是在所有内容中的第一个符合要求的标签,如果要查询所有的标签,我们在后面进行介绍。
我们可以验证一下这些对象的类型