• Beautiful Soup的使用


    1、Beautiful Soup简介

            Beautiful Soup是一个Python的一个HTML或XML的解析库,我们用它可以方便地从网页中提取数据。

            Beautiful Soup 提供一些简单的、Python 式的函数来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以无须很多代码就可以写出一个完整的应用程序。 Beautifùl Soup 自动将输人文档转换为 Unicode 编码,将输出文档转换为 utf-8 编码。你不需要考虑编码方式,除非文档没有指定具体的编码方式,这时你仅仅需要说明一下原始编码方式就可以了。 Beautiful Soup 已成为和 Ixml、html5lib 一样出色的 Python 解释器,为用户灵活提供不同的解析策略或强劲的速度。

    2、基本使用

    1、导入库

    1. from bs4 import BeautifulSoup
    2. import requests

    2、发送请求并获取HTML

    1. url = 'https://XXXXXXXX.com' # 替换为你想要爬取的网页的 URL
    2. response = requests.get(url)
    3. response.raise_for_status() # 如果请求失败,则抛出异常
    4. html_content = response.text

    3、解析HTML

    soup = BeautifulSoup(html_content, 'lxml')  # 使用 lxml 解析器解析 HTML

    4、查找标签

    • 使用 .find() 或 .find_all() 方法查找标签。

    • 使用 CSS 选择器或标签名作为参数。

    1. # 使用标签名查找
    2. p_tags = soup.find_all('p')
    3. # 使用 CSS 选择器查找
    4. div_with_class = soup.find('div', class_='some-class') # 注意:class 属性在 Python 中是关键字,所以使用 class_ 代替

    5、获得标签内容

    • 使用 .string 属性获取单个标签的文本内容(仅当标签内只有一个文本节点时有效)。

    • 使用 .get_text() 方法获取标签及其所有子标签的文本内容。

    1. # 获取单个标签的文本内容
    2. content = div_with_class.string
    3. # 获取标签及其所有子标签的文本内容
    4. all_text = p_tags[0].get_text()

    6、获得标签属性

    • 使用 ['attribute_name'] 或 .get('attribute_name') 获取标签的属性值。

    1. # 获取链接的 href 属性
    2. href = soup.find('a')['href'] # 注意:如果找不到标签或标签没有该属性,则会抛出 KeyError 异常
    3. # 更安全的方式是使用 .get() 方法,它会在找不到属性时返回 None
    4. href = soup.find('a').get('href')

    7、遍历标签

    • 使用 for 循环遍历 .find_all() 返回的标签列表。

    1. for p in soup.find_all('p'):
    2. print(p.get_text())

  • 相关阅读:
    【21天Python进阶学习挑战赛】[day8]操作MySQL和SqlServer
    Patroni的pause和resume功能
    linux 启动引导找不到内核修复
    linux 系统同步时间
    php-java-net-python-大学生兼职信息交流系统网站计算机毕业设计程序
    PCB(一):altium designer 环境安装配置
    vcpkg 安装任意版本的开源库
    How to Install one Plug-in into Eclipse
    牛逼啊!使用 Redis 实现一个轻量级的搜索引擎
    php包管理器composer浅析,thinkphp框架原理浅析
  • 原文地址:https://blog.csdn.net/m0_72765822/article/details/139456427