Python的Bs4解析库的学习与使用

178 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第28天,点击查看活动详情

Beautiful Soup 简称 BS4(其中 4 表示版本号)是一个 Python 第三方库,它可以从 HTML 或 XML 文档中快速地提取指定的数据。提供一些简单的、python 式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据。

数据解析原理:

  1. 标签定位
  2. 提取标签、标签属性中存储的数据值

bs4数据解析原理:

  • 1.实例化一个BeautifulSoup对象,并且将页面原码数据加载到该对象中
  • 2.通过调用BeautifulSoup对象中相关的属性或方法进行标签定位和数据提取

bs4中的一些重要的属性

(1)根据标签名查找
    - soup.a   只能找到第一个符合要求的标签
(2)获取属性
    - soup.a.attrs  获取a所有的属性和属性值,返回一个字典
    - soup.a.attrs['href']   获取href属性
(3)获取其标签内的内容
    - soup.a.string
    - soup.a.text
    - soup.a.get_text()
   注意:如果标签还有标签,那么string获取到的结果为None,而其它两个,可以获取文本内容

以下是我自己在使用过程中总结的一些步骤,之后还会进行详细的讲解

  • 把页面源代码交给BeautifulSoup进行处理, 生成bs对象 page = BeautifulSoup(resp.text, "html.parser") # 指定html解析器,如果不指定解析器不会报错,但是会爆红

  • 从bs对象中查找数据

    #find(标签, 属性=值)

    #find_all(标签, 属性=值)

  • 在指定属性的过程中,例如class和id等是python的关键字,所以直接使用python关键字会发现报错,有两种解决方式:
    第一种是在关键字后加_可解决问题,例如:class_ table = page.find("table", class_="hq_table")
    第二种是使用attrs{},例如: table = page.find("table", attrs={"class": "hq_table"})

Bs4下载安装

由于 Bautiful Soup 是第三方库,因此需要单独下载,下载方式非常简单,执行以下命令即可安装:

pip install bs4
pip install bs4 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install lxml -i https://pypi.tuna.tsinghua.edu.cn/simple

注意:此处关于pip命令的快速安装在上文有讲解,如果大家需要可以翻看上篇文章有两种方式

由于 Bs4 解析页面时需要依赖文档解析器,所以还需要安装 lxml 作为解析库:

pip install lxml

Bs4解析对象

#导入解析包
from bs4 import BeautifulSoup
#创建beautifulsoup解析对象
soup = BeautifulSoup(此处是我们需要使用的文件的名称, 'html.parser')

Bs4 库中定义了许多用于搜索的方法,find() 与 find_all() 是最为关键的两个方法

  1. find_all()
    find_all() 方法用来搜索当前 tag 的所有子节点,并判断这些节点是否符合过滤条件,最后以列表形式将符合条件的内容返回.\
  2. find()
    find() 方法与 find_all() 类似,不同之处在于 find_all() 会将文档中所有符合条件的结果返回,而 find() 仅返回一个符合条件的结果