BeautifulSoup 中 ‘lxml’ 和 ‘html.parser’有什么区别?

        大家都知道BeautifulSoup是一个第三方python库,用于从HTML或XML文档中提取数据,与re正则相比,具有简单、便利、高效的特点,在解析数据方面能够起到相互补充的作用。

        初学BeautifulSoup的小伙伴一定也遇到下面代码:

soup = BeautifulSoup(html, 'html.parser')
soup = BeautifulSoup(html, 'lxml')

        这两段代码都是解析 html 数据作用,但‘lxml’ 和 ‘html.parser’ 又有什么区别呢?小编带你一起了解一下。

        使用BeautifulSoup进行文档解析时需要解析器的配合,‘lxml’ 和 ‘html.parser’就是两种解析器。html.parser是python标准库中的解析器,我们可以直接使用。当然,Python也支持第三方解析器,例如 lxml 等,只是需要单独进行安装。

        BeautifulSoup 支持的常见解析器有四种: html.parserlxmllxml-xmlhtml5lib

        这四种解析器各有优劣,下面是他们特点对比图:

        由于lxml更高的效率,因此推荐使用lxml作为解析器。

        一般我们安装BeautifulSoup包的时候会自带这几种解析器,但如果你的包里没有lxml或html5lib,可以单独在terminal(我用的pycharm)中安装,或者再python环境中安装也可以。

pip  install  lxml
pip  install  html5lib

        下面我们来看一个例子吧!

        先引入一个 html (这是我随便粘贴的一段网页源代码)。

html = 
'<!DOCTYPE html>
<html lang="en">
<head>
    <title>Exemple</title>
</head>
    <body>
            <div class="catheader">
                <div class="top-left">
                    <a href="https://www.51shucheng.net/"><img src="https://www.51shucheng.net/images/logo.png" alt="无忧书城"
                                title="无忧书城" border="0" height="60" width="130"></a>
                 </div>
                <div class="top-right">
                    <div class="nav-top">
                        <a href="https://www.51shucheng.net/wuxia">武侠小说</a> | <a href="https://www.51shucheng.net/yanqing">言情小说</a> | <a
                                href="https://www.51shucheng.net/qingchun">青春文学</a> | <a href="https://www.51shucheng.net/kehuan">科幻小说</a> | <a
                                href="https://www.51shucheng.net/guanchang">官场小说</a> | <a href="https://www.51shucheng.net/daomu">盗墓小说</a> | <a
                                href="https://www.51shucheng.net/zhentan">侦探小说</a> | <a href="https://www.51shucheng.net/wangluo">网络小说</a> | <a
                                href="https://www.51shucheng.net/yingshi">影视小说</a> | <a href="https://www.51shucheng.net/xiandai">现代文学</a> | <a
                                href="https://www.51shucheng.net/fenlei">更多图书分类</a>
                    </div>
                </div>

            </div>

    </body>
</html>'

        然后导入BeautifulSoup包,并对数据进行解析,并提取数据。

# 导入 BeautifulSoup 包
from bs4 import BeautifulSoup

# 数据解析
soup = BeautifulSoup(html, 'html.parser)

# 提取数据中信息
a_list = soup.find_all('a')

# 打印数据
for a in a_list:
    print(a)

        关于BeautifulSoup使用部分这里就不多叙述了。最后提示一点,一般解析本地文件使用html.parser解析器更好用一些,如上我用的就是html.parser;如果要是解析网页文件,比如从网页上抓取下来得信息,就需要用 lxml 解析器,效率会更高一些。当然,lxml 也可以解析本地文件。综上,推荐使用 lxml 解析器!

  • 14
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值