专业的编程技术博客社区

网站首页 > 博客文章 正文

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

baijin 2024-09-27 06:44:30 博客文章 5 ℃ 0 评论

1 BeautifulSoup库简介

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

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

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


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



3 创建BeautifulSoup对象

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

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


4 四大对象种类

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

  • Tag
  • NavigableString
  • BeautifulSoup
  • Comment

(1)Tag

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


输出为:


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

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


输出为:


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

再看其attrs属性:


输出为:


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

(2)NavigableString

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


输出:

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

(3)BeautifulSoup对象

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

输出为:


(4)Comment

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


输出为:

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

下篇待续...

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表