• Python爬虫——BS4解析方式简介


    Python爬虫——BS4解析方式简介

    1、BautifulSoup简介

    BautifulSoup简介

    BeautifulSoup 简称 BS4(其中 4 表示版本号 4.x,之前的版本已经停止开发),是一个可以快速从 HTML 或 XML 文件中提取数据的第三方 Python 库。

    BeautifulSoup 能够将 HTML 或 XML 转化为可定位的树形结构,并且提供一些简单的、python 式的函数用来处理导航、查找、修改功能,

    BeautifulSoup 会自动将输入文档转换为 Unicode 编码,输出文档转换为 UTF-8 编码,如果文档没有指定一个编码方式,就需要说明一下原始编码方式。

    BeautifulSoup 语法简单,使用方便,并且容易理解,不需要多少代码就可以写出一个完整的应用程序,使用BeautifulSoup 我们可以节省工作时间,提高解析效率。

    BeautifulSoup 的优缺点:

    • 缺点:BeautifulSoup 默认使用 Python 标准库中的 HTML 解析器,HTML 解析器需要解析的数据量比较大或比较频繁时效率比 lxml 解析器低,因此在使用BeautifulSoup 时要指定解析器为 lxml 解析器
    • 优点:接口设计人性化,使用起来方便

    解析器:

    BeautifulSoup 在解析的时候实际上是依赖于解析器的,它除了支持 Python 标准库中的 HTML 解析器,还支持一些第三方的解析器比如 lxml。

    BeautifulSoup 主要解析器和优缺点对比如下表:

    解析器使用方法优点缺点
    Python标准库BeautifulSoup (html文件, “html.parser”)Python 的内置标准库、执行速度适中 、文档容错能力强Python 2.7.3 or 3.2.2 前的版本中文容错能力差
    lxml HTML 解析器BeautifulSoup (html文件, “lxml”)速度快、文档容错能力强需要安装 C 语言库 lxml
    lxml XML解析器解析器 BeautifulSoup (html文件, “xml”)速度快、唯一支持 XML 的解析器需要安装 C 语言库 lxml
    html5lib 解析器BeautifulSoup (html文件, “html5lib”)最好的容错性、以浏览器的方式解析文档生成 HTML5 文档速度慢、不依赖外部扩展

    lxml HTML 解析器有解析 HTML 和 XML 的功能,并且速度快,文档容错能力强,所以推荐使用,使用前要先安装lxml。

    2、BautifulSoup 安装

    BautifulSoup 安装位置:Python安装目录的Scripts文件夹下

    安装命令:pip install bs4

    如图所示则下载成功:

    在这里插入图片描述

    3、BautifulSoup 基本使用

    待解析的 html 文件:

    DOCTYPE html>
    <html lang="en">
      <head>
       <title>
       title>
      head>
      <body>
       <p class="title"/>
       <p class="story">
            <a class="s1" href="www.baidu.com" id="l1">a>
            <a class="s2" href="" id="l2">a>
            <a class="s3" href="" id="l3">a>
       p>
       <p class="story"/>
      body>
    html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    使用实例:

    BeaufulSoup 对象的初始化:

    • 第一个参数:html文件,

    • 第二个参数;解析器的类型, 使用 lxml 解析器

    soup = BeautifulSoup(open('test.html',encoding='utf-8'),'lxml')
    
    • 1

    调用 soup 对 html 文件解析,提取文本内容:

    # 获取第一个符合条件的标签属性
    print(soup.p)
    # 获取第一个符合条件的标签属性和属性值
    print(soup.a.attrs)
    
    • 1
    • 2
    • 3
    • 4

    执行结果:

    <p class="title"></p>
    {'class': ['s1'], 'href': 'www.baidu.com', 'id': 'l1'}
    
    • 1
    • 2
  • 相关阅读:
    2023年第三届HiPChips解读
    问题随记 —— PyCharm 连接远程服务器的 Python 环境
    程序员保密协议
    外汇天眼:ADSS已与analytics KX供应商就合作达成一致
    文件混淆-界面介绍
    基于STM32设计的便携式温度自动记录仪
    OLED透明屏交互技术:开创未来科技的新篇章
    “星辰大海”开启 孙宇晨为人类未来付出的一张“超额门票”
    安全测试用例汇总
    关于uniapp小程序的分包问题
  • 原文地址:https://blog.csdn.net/wpc2018/article/details/126098392