当前位置: 代码迷 >> 综合 >> 网络编程的提取解析(2)——BeautifulSoup
  详细解决方案

网络编程的提取解析(2)——BeautifulSoup

热度:53   发布时间:2024-01-19 23:58:14.0

在上节课学习的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的学习。

  相关解决方案