大家都知道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 解析器!

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐