Python网络编程之Beautiful

1BeautifulSoup库简介

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

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

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

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

3创建BeautifulSoup对象

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

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

python基础教程教材Python编程从零基础到项目实战实例python入门淘宝¥39.8¥79.8购买已下架

4四大对象种类

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

TagNavigableStringBeautifulSoupComment(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。

下篇待续...

Python3网络爬虫开发实战京东月销量好评率99%无理由退换京东配送官方店¥86.1购买


转载请注明:http://www.aierlanlan.com/rzdk/1173.html