这期内容当中小编将会给大家带来有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)。
看一下主要解析器和它们的优缺点:
<强> 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库剖析