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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xiao艾扶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值