Python爬虫中BeautifulSoup库剖析

  介绍

这期内容当中小编将会给大家带来有Python爬关虫中BeautifulSoup库剖析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库,它能够将HTML或XML转化为可定位的树形结构,并提供了导航,查找,修改功能,它会自动将输入文档转换为Unicode编码,输出文档转换为utf - 8编码。

BeautifulSoup支持Python标准库中的HTML解析器和一些第三方的解析器,默认使用Python标准库中的HTML解析器,默认解析器效率相对比较低,如果需要解析的数据量比较大或比较频繁,推荐使用更强,更快的lxml解析器。

<强> 1安装

<强> (1)BeautifulSoup安装

如果使用Debain或ubuntu系统,可以通过系统的软件包管理来安装:apt-get安装Python-bs4,如果无法使用系统包管理安装,可以使用pip安装beautifulsoup4来安装。

<强>(2)第三方解析器安装

如果需要使用第三方解释器lxml或html5lib,可是使用如下命令进行安装:apt-get安装Python-lxml (html5lib)和pip安装lxml (html5lib)。

看一下主要解析器和它们的优缺点:

 Python爬虫中BeautifulSoup库剖析

<强> 2快速上手

将一段文档传入BeautifulSoup的构造方法,就能得到一个文档的对象,可以传入一段字符串或一个文件句柄,示例如下:

<强>(1)使用字符串

我们以如下一段HTML字符串为例:

html =, & # 39; & # 39; & # 39;   & lt; ! DOCTYPE  html>   & lt; html>   & lt; head>   ,,,& lt; meta  charset=癠TF-8"比;   ,,,& lt; title> BeautifulSoup学习& lt;/title>   & lt;/head>   & lt; body>   Hello  BeautifulSoup   & lt;/body>   & lt;/html>   & # 39;& # 39;& # 39;

使用示例如下:

得到bs4  import  BeautifulSoup   #使用默认解析器   时间=soup  BeautifulSoup (html、& # 39; html.parser& # 39;)   #使用,lxml 解析器   soup =, BeautifulSoup (html、& # 39; lxml # 39;)

<强>(2)本地文件

还以上面那html段为例,将上面html字符串放在索引。html文件中,使用示例如下:

#使用默认解析器   时间=soup  BeautifulSoup(打开(& # 39;index . html # 39;), & # 39; html.parser& # 39;)   #使用,lxml 解析器   soup =, BeautifulSoup(打开(& # 39;index . HTML # 39;), & # 39; lxml # 39;)

<强> 2.1对象的种类

BeautifulSoup将HTML文档转换成一个树形结构,每个节点都是Python对象,所有对象可以归纳为4种:标签,NavigableString, BeautifulSoup,置评。

<强>(1)标记对象

标记对象与HTML或XML原生文档中的标签相同,示例如下:

soup =, BeautifulSoup (& # 39; & lt; title> BeautifulSoup学习& lt;/title> & # 39;, & # 39; lxml # 39;)   tag =soup.title   tp =类型(标签)   打印(标签)   打印(tp)   #输出结果   & # 39; & # 39; & # 39;   & lt; title> BeautifulSoup学习& lt;/title>   & lt; class  & # 39; bs4.element.Tag& # 39;比;   & # 39;& # 39;& # 39;

标记有很多方法和属性,这里先看一下它的的两种常用属性:名字和属性。

我们可以通过. name来获取标签的名字,示例如下:

soup =, BeautifulSoup (& # 39; & lt; title> BeautifulSoup学习& lt;/title> & # 39;, & # 39; lxml # 39;)   tag =soup.title   打印(tag.name)   #输出结果   #标题

我们还可以修改标签的名字,示例如下:

tag.name =, & # 39; title1& # 39;   打印(标签)   #输出结果   # & lt; title1> BeautifulSoup学习& lt;/title1>

一个标签可能有很多个属性,先看一它的类属性,其属性的操作方法与字典相同,示例如下:

soup =, BeautifulSoup (& # 39; & lt; title> BeautifulSoup学习& lt;/title> & # 39;, & # 39; lxml # 39;)   tag =soup.title   cls =,标签(& # 39;类# 39;】   打印(cls)   #输出结果   # (& # 39;tl # 39;]

我们还可以使用.attrs来获取,示例如下:

ats =tag.attrs   打印(ats)   #输出结果   #{& # 39;类# 39;:,(& # 39;tl # 39;]}

标记的属性可以被添加,修改和删除,示例如下:

#添加,id 属性   标签(& # 39;id # 39;],=, 1   #修改,class 属性   标签(& # 39;类# 39;],=,& # 39;tl1& # 39;   #删除,class 属性   del 标记[& # 39;类# 39;]

Python爬虫中BeautifulSoup库剖析