在上节课学习的requests库中,我们知道怎么请求一个网页信息并响应其网站资源。比如我们可以获取网站的地址、编码格式等等。那么接下来我们获取了网页地址,如何将其解析成我们想要处理的数据结构呢?这就要用到第二个库了。
前言
BeautifulSoup是一种能够解析Html页面的第三方库,同样可以以快速便捷的方式完成安装和使用。如何将我们获取的信息处理成一碗“美味汤”,BeautifulSoup必不可少。
1、“美味汤”的安装
首先win+r进入cmd界面,敲打如下代码:
pip install beautifulSoup
像这样,我这里已经安装完毕,所以不会显示下载的过程。
稍微测试一下:
这就是测试的内容,稍微参考了特定的网站解析出来最下面图片的html内容。
2、“美味汤”的基本元素
Beautiful Soup是一种解析、遍历、维护标签树的功能库。标签数在学习html经常知道,我们会使用相关标签来在网页中添加文章的内容。
<html>
<body>
<p class="title">
...
</p>
</body>
</html>
这里,p就是p标签,后面的是标签的属性。属性是一种表示标签特点的设置选项。
2.1 Beautiful Soup解析器
在前面的测试中,我们打出了这一行代码:
soup = BeautifulSoup(dem0,'html.parser')
我们就根据第二个内容进行分析,这个代码本身是通过使用html.parser解析器,来分析获取的demo=r.text中获取的html资源。当然,我们的解析器不止这一种:
解析器 | 使用方法 | 条件 |
---|---|---|
bs4的html解析器 | BeautifulSoup(mk,‘html.parser’) | 安装bs4 |
lxml的html解析器 | BeautifulSoup(mk,‘lxml’) | pip install lxml |
lxml的xml解析器 | BeautifulSoup(mk,‘xml’) | pip install lxml |
html5lib的解析器 | BeautifulSoup(mk,‘html5lib’) | pip install html5lib |
2.2 BeautifulSoup的基本元素
还是拿
标签为例子。基本元素 | 说明 |
---|---|
Tag | 标签,最基本的信息组织单元,即 … |
Name | 标签名,即p |
Attributes | 标签的属性,格式为.attrs |
NavigablieString | 标签内废属性字段,即中字符串,格式为.string |
Comment | 标签内字符串的注释部分 |
比如承接前面的练习:
2.3 html内容遍历的方法
BeautifulSoup将html代码以树的形式进行遍历,其内容大致如下:
我们在选择标签输出时,要想到html的标签结构,然后知道目标标签所在的结构地址,才可能完成找到相应的目标。
下行遍历:
属性 | 说明 |
---|---|
.contents | 子节点的列表,将所有儿子节点存入列表 |
.children | 子节点的迭代类型,应用于循环遍历儿子节点 |
.descendants | 子孙节点的迭代,包含了所有子孙节点用于循环遍历 |
上行遍历:
属性 | 说明 |
---|---|
.parent | 节点的父亲标签 |
.parents | 节点先辈标签的迭代类型,用于循环遍历先辈节点 |
平行遍历:
属性 | 说明 |
---|---|
.next_sibling | 返回按照html文本顺序的下一个平行节点标签 |
.previous_sibling | 返回按照html文本顺序的上一个平行节点标签 |
.next_siblings | 迭代类型,返回按照html文本顺序的后续所有平行节点标签 |
.previous_siblings | 迭代类型,返回按照html文本顺序的前续所有平行节点标签 |
平行遍历要求的前提在于是在同一个父亲节点下面。
2.4 输出html更友好
这里使用的是beautifulSoup中的prettify方法。
这里面主要在于,该方法为html文本<>以及相关内容添加’\n’。
当然这也能用于标签,其格式如下:
<tag>.prettify()
总结
慕课所讲的内容非常的清晰明确,我也是学习其中的知识内容。所以额外的学习可以参考嵩天教授的网络爬虫与信息提取这门课。谢谢大家的阅读,这里是我对beautifulSoup的学习。