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

相关文章

MySQL字符串常用函数详解

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

Java中Arrays类和Collections类常用方法示例详解

《Java中Arrays类和Collections类常用方法示例详解》本文总结了Java中Arrays和Collections类的常用方法,涵盖数组填充、排序、搜索、复制、列表转换等操作,帮助开发者高... 目录Arrays.fill()相关用法Arrays.toString()Arrays.sort()A

MySQL中比较运算符的具体使用

《MySQL中比较运算符的具体使用》本文介绍了SQL中常用的符号类型和非符号类型运算符,符号类型运算符包括等于(=)、安全等于(=)、不等于(/!=)、大小比较(,=,,=)等,感兴趣的可以了解一下... 目录符号类型运算符1. 等于运算符=2. 安全等于运算符<=>3. 不等于运算符<>或!=4. 小于运

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

golang中reflect包的常用方法

《golang中reflect包的常用方法》Go反射reflect包提供类型和值方法,用于获取类型信息、访问字段、调用方法等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值... 目录reflect包方法总结类型 (Type) 方法值 (Value) 方法reflect包方法总结

C# 比较两个list 之间元素差异的常用方法

《C#比较两个list之间元素差异的常用方法》:本文主要介绍C#比较两个list之间元素差异,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1. 使用Except方法2. 使用Except的逆操作3. 使用LINQ的Join,GroupJoin

python常用的正则表达式及作用

《python常用的正则表达式及作用》正则表达式是处理字符串的强大工具,Python通过re模块提供正则表达式支持,本文给大家介绍python常用的正则表达式及作用详解,感兴趣的朋友跟随小编一起看看吧... 目录python常用正则表达式及作用基本匹配模式常用正则表达式示例常用量词边界匹配分组和捕获常用re

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用