Beautiful Soup学习笔记(对我自己比较常用)

2024-01-19 15:38

本文主要是介绍Beautiful Soup学习笔记(对我自己比较常用),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文仅为学习笔记,作用仅为方便自己查阅复习使用,具体学习路线参考
Beautiful Souo 4.2.0文档

文章目录

  • Tag
    • name
    • Attributes
    • tag属性的删除
    • tag属性的修改
    • 多值属性
    • tag中的字符串
    • 注释及特殊字符串

Tag

tag中两个最重要的属性: name和attributes

soup = BeautifulSoup('<b class="121">123</b>')
tag = soup.b

针对这个代码

name

每个tag都有自己的名字,通过 .name 来获取:tag.name输出得到b
当然,还可以改变tag的nametag.name = 'hhh'
重新输出后就会得到<hhh class="121">123</blockquote>

Attributes

一个tag可能有很多个属性. tag 有一个 “class” 的属性,值为 “boldest” ; tag的属性的操作方法与字典相同:

soup = BeautifulSoup('<b class="121">123</b>','lxml')
tag = soup.b
print(tag)
print(tag.attrs)
print(tag['class'])
输出结果为
<b class="121">123</b>
{'class': ['121']}
['121']

当然,我们可以对tag的属性进行修改或者删除

tag属性的删除

这两种都可以
del tag.attrs
del tag['class']

tag属性的修改

soup = BeautifulSoup('<b class="121">123</b>','lxml')
tag = soup.b
tag['class'] = 1
tag['id'] = 2
print(tag)
输出结果为
<b class="1" id="2">123</b>

多值属性

在这里下面肯定有疑问我会返回来看最常见的多值的属性是 class (一个tag可以有多个CSS的class). 还有一些属性 rel , rev , accept-charset ,headers , accesskey . 在Beautiful Soup中多值属性的返回类型是list

soup = BeautifulSoup('<b class="121 456">123</b>','lxml')
tag = soup.b
print(tag['class'])
print(tag.attrs)
输出结果为:
['121', '456']
{'class': ['121', '456']}

如果某个属性看起来好像有多个值,但在任何版本的HTML定义中都没有被定义为多值属性,那么Beautiful Soup会将这个属性作为字符串返回(但是这个我还不太懂,希望以后复习的时候能搞懂)—突然搞懂了参见上面多值属性

soup = BeautifulSoup('<b id="my id">123</b>','lxml')
tag = soup.b
print(tag['id'])
print(tag.attrs)
输出结果为:
my id
{'id': 'my id'}

如果我们将tag转换成字符串时,多值属性会合并为一个值(中间用空格分隔)

soup = BeautifulSoup('<b class="123s">123</b>','lxml')
tag = soup.b
print(tag['class'])
tag['class'] = ['123', '1465'] # 注意这个必须得是字符串否则会报错
print(tag['class'])
print(tag)
输出结果为:
['123s']
['123', '1465']
<b class="123 1465">123</b>

如果上面那个不是字符串就会报错这个TypeError: sequence item 0: expected str instance, int found

如果转换的文档是XML格式,那么tag中不包含多值属性

soup = BeautifulSoup('<b class="123 hhh">123</b>','xml')
tag = soup.b
print(tag['class'])
print(tag)
输出结果为:
123 hhh
<b class="123 hhh">123</b>

tag中的字符串

嗯 我发现这两种都可以
soup = BeautifulSoup('<b class="123 hhh">123</b>','xml')
tag = soup.b
print(tag.string)
print(soup.string)
print(soup.text)
输出结果为:
123
123
123

tag中包含的字符串不能编辑,但是可以被替换成其它的字符串,用 replace_with()方法:

tag.string.replace_with("我爱python")

然后文章里面说如果想在BS外使用tag.string ,要使用unicode方法,当然我现在似乎不需要了解,先放这里如果想看去原文里面看看

注释及特殊字符串

Tag , NavigableString , BeautifulSoup 基本上是覆盖了htmlxml中的所有内容,但是还有一些特殊对象,比如文档的注释部分:

soup = BeautifulSoup('<b><!--我爱python--></b>','xml')
tag = soup.b
print(tag)
print(tag.string)
输出结果为:(一定要注意其不同)
<b><!--我爱python--></b>
我爱python

然后注释的格式为<!-- asdsada -->,上面代码试试删除其余符号都会出错

OK,今天先学到这里,下次继续冲冲冲!!!

这篇关于Beautiful Soup学习笔记(对我自己比较常用)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/622888

相关文章

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

SpringBoot 获取请求参数的常用注解及用法

《SpringBoot获取请求参数的常用注解及用法》SpringBoot通过@RequestParam、@PathVariable等注解支持从HTTP请求中获取参数,涵盖查询、路径、请求体、头、C... 目录SpringBoot 提供了多种注解来方便地从 HTTP 请求中获取参数以下是主要的注解及其用法:1

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python如何实现高效的文件/目录比较

《Python如何实现高效的文件/目录比较》在系统维护、数据同步或版本控制场景中,我们经常需要比较两个目录的差异,本文将分享一下如何用Python实现高效的文件/目录比较,并灵活处理排除规则,希望对大... 目录案例一:基础目录比较与排除实现案例二:高性能大文件比较案例三:跨平台路径处理案例四:可视化差异报

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Java Stream流以及常用方法操作实例

《JavaStream流以及常用方法操作实例》Stream是对Java中集合的一种增强方式,使用它可以将集合的处理过程变得更加简洁、高效和易读,:本文主要介绍JavaStream流以及常用方法... 目录一、Stream流是什么?二、stream的操作2.1、stream流创建2.2、stream的使用2.

MySQL常用字符串函数示例和场景介绍

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练... 目录一、字符串函数概述1.1 字符串函数的作用1.2 字符串函数分类二、字符串长度与统计函数2.1

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

MySQL字符串常用函数详解

《MySQL字符串常用函数详解》本文给大家介绍MySQL字符串常用函数,本文结合实例代码给大家介绍的非常详细,对大家学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql字符串常用函数一、获取二、大小写转换三、拼接四、截取五、比较、反转、替换六、去空白、填充MySQL字符串常用函数一、