首页 > 编程语言 >python进阶-02-一篇文章搞明白BeautifulSoup

python进阶-02-一篇文章搞明白BeautifulSoup

时间:2024-11-20 11:44:55浏览次数:3  
标签:02 进阶 python 标签 BeautifulSoup find soup html class

python进阶-02-一篇文章搞明白BeautifulSoup

一.说明

开始今天的日拱一卒,上一篇文章我们介绍了Xpath,今天我们开始介绍BeautifulSoup,这个也是用来解析HTML文档的技术,但是跟Xpath 还是有区别的,XPath 是使用路径表达式来定位元素,而BeautifulSoup就是一个字简单。

二.安装

要使用BeautifulSoup,就的先安装,但是BeautifulSoup的安装方式跟之前不一样,因为BeautifulSoup 已经被zhenghe到bs4 中了故需要安装 bs4

pip install bs4 -i http://pypi.doubanio.com/simple --trusted-host pypi.doubanio.com

三.创建 BeautifulSoup 对象

   response = requests.get('https://www.iciba.com/word',params=params.dict())
   html = response.content.decode('utf-8', 'ignore')  # 'ignore' 忽略非法字符[starts-with(@id,"b")]
   # 创建 BeautifulSoup 对象
   soup = BeautifulSoup(html, 'html.parser')

四.BeautifulSoup 的解析器

刚刚我们通过soup = BeautifulSoup(html, ‘html.parser’) 来解析html文档来实现创建 BeautifulSoup 对象

‘html.parser’ 就是BeautifulSoup 的解析器,以下为BeautifulSoup支持的解析器

解析器调用方法
Python标准库BeautifulSoup(html,“html.parser”)
lxml HTML 解析器BeautifulSoup(html, “lxml”)需要安装c语言库
lxml XML 解析器BeautifulSoup(xml_content, [“lxml-xml”])BeautifulSoup(xml_content, “xml”)需要安装c语言库
html5lib 解析器BeautifulSoup(html, “html5lib”)

五.BeautifulSoup 基本语法

  1. 获取整个文档的结构:print(soup.prettify())

  2. 基础用法:

    操作描述
    soup.title获取整个 <title> 标签字段
    soup.title.name获取 <title> 标签的名称(即 “title”)
    soup.title.parent.name获取 <title> 标签的父级标签名称
    soup.p获取第一个 <p> 标签
    soup.p['class']获取第一个 <p> 标签中的 class 属性值
    soup.p.get('class')soup.p['class'] 等价,返回 class 属性值
    soup.a获取第一个 <a> 标签
    soup.find_all('a')获取所有 <a> 标签
    soup.find(id="link3")获取 id="link3" 的标签
    soup.a['class'] = "newClass"修改第一个 <a> 标签的 class 属性值
    del soup.a['class']删除第一个 <a> 标签的 class 属性
    soup.find('a').get('id')获取第一个 <a> 标签的 id 属性值
    soup.title.string获取 <title> 标签的文本内容
    soup.title.stripped_strings去掉空格换行等
    soup.get_text()获取标签及子标签包含的文本内容
  3. 查找标签:soup.find()soup.find_all()

    # 查找第一个 <h1> 标签
    h1_tag = soup.find('h1')
    print(h1_tag.text)  # 打印出 h1 标签中的文本内容
    
    # 查找所有的 <a> 标签
    a_tags = soup.find_all('a')
    for tag in a_tags:
        print(tag.get('href'))  # 打印出所有链接的 href 属性
        
        
    # 查找类名为 "example" 的 <div> 标签
    div_tag = soup.find('div', class_='example')
    print(div_tag.text)
    
    # 查找 ID 为 "main" 的 <div> 标签
    main_div = soup.find(id='main')
    print(main_div.text)
    
  4. CSS 选择器查找标签:使用 select() 方法来查找符合条件的元素

    # 查找所有 class 为 "item" 的 <div> 标签
    items = soup.select('div.item')
    for item in items:
        print(item.text)
    

六.BeautifulSoup 和正则表达式匹配

from bs4 import BeautifulSoup
import re

# 假设 `html` 是你的 HTML 内容
html = '''<html>
            <div class="Mean_trans1"><p>Text 1</p></div>
            <div class="Mean_trans2"><p>Text 2</p></div>
            <div class="Mean_trans3"><p>Text 3</p></div>
          </html>'''

# 创建 BeautifulSoup 对象
soup = BeautifulSoup(html, 'html.parser')

# 使用正则表达式匹配 class 属性以 'Mean_trans' 开头的 div 标签
div = soup.find('div', class_=re.compile('^Mean_trans'))

# 获取第一个 <p> 标签的文本内容
text = div.find('p').text if div else None

print(text)

七.实战,用来技术交流,需要翻译请购买对应API

    response = requests.get('https://www.iciba.com/word',params={'w':'Hello World'})
    html = response.content.decode('utf-8', 'ignore')  # 'ignore' 忽略非法字符[starts-with(@id,"b")]
    # 创建 BeautifulSoup 对象
    soup = BeautifulSoup(html, 'html.parser')
    result="无数据"
    try:
        
        divs = soup.find('ul', class_=re.compile('^Mean_part'))
        print(divs)
        # 提取每个 div 中的第一个 <p> 标签的文本内容
        texts = divs.find('span').text
        result = texts
    except Exception as e:
        print(e)
    return result

八.总结

Python 进阶中的BeautifulSoup是不是超级简单,比Xpath 还要简单不少!

创作整理不易,请大家多多关注 多多点赞,有写的不对的地方欢迎大家补充,我来整理,再次感谢!

标签:02,进阶,python,标签,BeautifulSoup,find,soup,html,class
From: https://blog.csdn.net/Lookontime/article/details/143822349

相关文章

  • 计算机毕设项目源代码 python基于Python web框架的学生宿舍管理系统
    标题: python基于Pythonweb框架的学生宿舍管理系统设计一个基于PythonWeb框架的学生宿舍管理系统,可以显著提高宿舍管理的效率和便捷性。以下是一个典型的学生宿舍管理系统的主要功能模块:1.系统概述•目标:简化宿舍管理流程,提高管理效率,提升学生满意度。•技术栈:Python(后......
  • 富满 TC5020EJ SOP-16 16位恒流LED 驱动IC
    ......
  • 【漏洞复现】CVE-2023-45852 Viessmann Vitogate 300命令执行漏洞
    漏洞描述CVE(CAN)ID:CVE-2023-45852ViessmannVitogate是Viessmann公司的一个智能化控制系统。ViessmannVitogate3002.1.3.0之前版本存在命令注入漏洞,未经身份认证的攻击者可利用该漏洞绕过身份认证并通过shell元字符执行任意命令。免责声明技术文章仅供参考,任何......
  • C#调用python的方法
    1.Python.NET:Python.NET允许在C#中直接调用Python代码。它提供了对Python解释器的嵌入支持,并且可以在Windows和Linux上运行。使用Python.NET,你可以在C#中加载Python模块并调用函数。2.IronPython:IronPython是一个Python实现,运行在.NET平台上。它允许你在.NET应用程序中直接执......
  • 20241120
    一、实验目的深入理解决策树、预剪枝和后剪枝的算法原理,能够使用Python语言实现带有预剪枝和后剪枝的决策树算法C4.5算法的训练与测试,并且使用五折交叉验证算法进行模型训练与评估。二、实验内容(1)从scikit-learn库中加载iris数据集,使用留出法留出1/3的样本作为测试......
  • ESP32初学教程Python版-从环境搭建到完成控制LED灯闪烁 | 幽络源
    环境前提有Python环境,然后版本必须得大于或等于3.8有PIP,且最好配置了国内镜像这两个环境很简单,不懂的可以加入我们的网络技术交流QQ群询问:307531422前言幽络源站长使用的ESP32是WROMM的,当然,其他的大同小异大致步骤1.安装驱动2.下载MicroPython固件到ESP323.准备烧录固......
  • Python 性能优化与高效编程:让你的代码跑得更快、更稳
    Python性能优化与高效编程:让你的代码跑得更快、更稳Python是一种易于使用的编程语言,但它的性能常常被认为是相对较低的。特别是在数据密集型或计算密集型的任务中,Python的执行速度有时会成为瓶颈。因此,学会如何优化Python性能,使得程序在保证可读性的同时,依旧高效且快......
  • Python 项目自动化与 CI/CD 实践:让部署和发布像开挂一样简单
    Python项目自动化与CI/CD实践:让部署和发布像开挂一样简单在软件开发的世界里,自动化和持续集成/持续部署(CI/CD)是超级英雄,它们不仅让我们的工作更加高效,还能避免那些令人头疼的手动操作。它们就像开发者的最佳伙伴,随时准备打击bug,拯救开发进度。那么,今天我们就来聊聊怎......
  • numpy02——广播原则
    1.广播原则的解释2. 索引3.切片,跟python的切片差不多4.sort方法,他是列表的内置方法,用于在列表就地排序,即直接在原列表上进行排序,不返回新列表,他是一个方法,可以对比可变数据类型5.sorted函数,他是一个函数,可以对任何可迭代对象进行排序,返回一个新的排序后的列表。......
  • Android15音频进阶之提升进程优先级方案(九十五)
    简介:CSDN博客专家、《Android系统多媒体进阶实战》一书作者新书发布:《Android系统多媒体进阶实战》......