python3网络编程库_Python网络编程之BeautifulSoup库的使用(一)

本文详细介绍了Python的BeautifulSoup库,它是一个用于解析HTML和XML文档的工具,提供了简单易用的函数进行导航、搜索和修改。通过创建BeautifulSoup对象并使用不同的解析器,如lxml,可以高效地提取数据。文章还讲解了四大核心对象:Tag、NavigableString、BeautifulSoup和Comment,以及如何操作它们来获取和处理网页内容。
摘要由CSDN通过智能技术生成

a1ec08fa513d269715cf8603fc9230fd4216d8c4.jpeg?token=68ebd81f57f303122e9543a79be6dd06

1 BeautifulSoup库简介

BeautifulSoup是python的一个库,其提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。

BeautifulSoup4和lxml一样,BeautifulSoup也是一个HTML/XML的解析器,主要的功能也是如何解析和提取HTML/XML数据。

BeautifulSoup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。BeautifulSoup支持Python标准库中的HTML解析器,还支持一些第三方的解析器,如果我们不安装它,则Python会使用Python默认的解析器,lxml解析器更加强大,速度更快,推荐使用lxml解析器。

2 BeautifulSoup主要解析器及其优缺点

9345d688d43f8794fcd9338d7a728cf21ad53ada.jpeg?token=e55b9761c9f0411735a7a8f3f2e0d627

3 创建BeautifulSoup对象

首先需要从bs4模块中引入BeautifulSoup库,然后创建一个html式字符串来代替网页html内,最后,以html式字符串为解析内容,以python内置的html.parser解析器,便可创建出BeautifulSoup对象,代码如下:

5bafa40f4bfbfbedf7996e83d0997530adc31ffd.jpeg?token=43f6c7fbbb48fff1c715f952ec24aed1

其中,prettify方法是将内容格式化输出,输出如下:

caef76094b36acaf47374179d5b00f1603e99cd4.jpeg?token=798bc4b251c18eca14127536106853f3

4 四大对象种类

BeautifulSoup能够将复杂的HTML转换成为一个复杂的树形结构,其中每个节点都是python对象,所有这些对象可以分类4大类,分别为:

TagNavigableStringBeautifulSoupComment(1)Tag

Tag就是HTML中的一个个标签,如a标签、title标签等,具体的tag就是一个包含内部内容的整个标签对,如下:

279759ee3d6d55fb6d896f0ac54bcd4c20a4dd3b.jpeg?token=0938128962dc7d348f739d95bf7271ec

输出为:

79f0f736afc3793149c43fd943ad354342a91105.jpeg?token=67cec6109f67131b374bc9494a70b4d3

是不是这样获取标签内容要比正则表达式方便多了,但其返回的是第一个符合要求的标签。

对于Tag,其有两个属性name和attrs,先看name:

34fae6cd7b899e517f6743d1e5ce5b35ca950dfd.jpeg?token=f75494735e2c012d02d331c07011871c

输出为:

ac345982b2b7d0a2aec3945e6c86f40f4a369a5f.jpeg?token=7cb653aeb65762ed9f7a5e29a4a3cf42

可见soup对象是一个文档,head标签的name属性值就是head,就是标签本身。

再看其attrs属性:

359b033b5bb5c9ea9a4aa944725034063bf3b348.jpeg?token=19acedef7a74852a9cbab64cce1efd84

输出为:

b8389b504fc2d5627df786ab4e7812e977c66c6d.jpeg?token=109974cf54f73f2af43b4c6b081c2829

可见,标签的attrs值是一个字典类型,具体就是该标签的所有属性值。

(2)NavigableString

利用标签的attrs参数可以获得标签的属性内容,那标签对内部的内容怎么获取那?其实非常简单,只需要在标签加.string就可以啦,如下:

9358d109b3de9c82eaed8ee6c4e8020c18d843ba.jpeg?token=c5ff31ab0c7b11124b10b213739f8d57

输出:

902397dda144ad34868ad1fd79cb8ef231ad8507.jpeg?token=fdabe519abbfb758053c7b88ef50e782

可见.string值的类型是一个NavigableString对象。

(3)BeautifulSoup对象

BeautifulSoup对象表示的是一个文档的内容。大部分时候,可以把它当作Tag对象,是一个特殊的Tag,我们可以分别获取它的类型,名称,以及属性,如下:

2934349b033b5bb5be7da0e69eba573fb700bcf4.jpeg?token=b5cc4aee00acf45e4612b1bae35042dc

输出为:

d1160924ab18972be741b7ca4fa4f98f9e510a22.jpeg?token=24eded5b876e04d2d740b0730da606a6

(4)Comment

Comment对象是一个特殊类型的NavigableString对象,其实输出的内容是不包括注释符号,以下面带注释的标签为例:

1f178a82b9014a902d8e8cdc011ebb14b21bee94.jpeg?token=9e64bb69826c2fab610717ea795141ef

输出为:

8ad4b31c8701a18b7250d2ed3646850e2938fe4e.jpeg?token=8772e80cc835606a6ec23cbd31a68de4

可见a标签中包含的内容时一个注释,但.string的值确实不带有注释符号,其类型为Comment。

下篇待续...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值