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

相关文章

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

Python将字符串转换为小写字母的几种常用方法

《Python将字符串转换为小写字母的几种常用方法》:本文主要介绍Python中将字符串大写字母转小写的四种方法:lower()方法简洁高效,手动ASCII转换灵活可控,str.translate... 目录一、使用内置方法 lower()(最简单)二、手动遍历 + ASCII 码转换三、使用 str.tr

Spring Boot 常用注解整理(最全收藏版)

《SpringBoot常用注解整理(最全收藏版)》本文系统整理了常用的Spring/SpringBoot注解,按照功能分类进行介绍,每个注解都会涵盖其含义、提供来源、应用场景以及代码示例,帮助开发... 目录Spring & Spring Boot 常用注解整理一、Spring Boot 核心注解二、Spr

重新对Java的类加载器的学习方式

《重新对Java的类加载器的学习方式》:本文主要介绍重新对Java的类加载器的学习方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、介绍1.1、简介1.2、符号引用和直接引用1、符号引用2、直接引用3、符号转直接的过程2、加载流程3、类加载的分类3.1、显示

Java中的内部类和常用类用法解读

《Java中的内部类和常用类用法解读》:本文主要介绍Java中的内部类和常用类用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录内部类和常用类内部类成员内部类静态内部类局部内部类匿名内部类常用类Object类包装类String类StringBuffer和Stri

MySQL连接池(Pool)常用方法详解

《MySQL连接池(Pool)常用方法详解》本文详细介绍了MySQL连接池的常用方法,包括创建连接池、核心方法连接对象的方法、连接池管理方法以及事务处理,同时,还提供了最佳实践和性能提示,帮助开发者构... 目录mysql 连接池 (Pool) 常用方法详解1. 创建连接池2. 核心方法2.1 pool.q

Spring Boot 常用注解详解与使用最佳实践建议

《SpringBoot常用注解详解与使用最佳实践建议》:本文主要介绍SpringBoot常用注解详解与使用最佳实践建议,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录一、核心启动注解1. @SpringBootApplication2. @EnableAutoConfi

SQL常用操作精华之复制表、跨库查询、删除重复数据

《SQL常用操作精华之复制表、跨库查询、删除重复数据》:本文主要介绍SQL常用操作精华之复制表、跨库查询、删除重复数据,这些SQL操作涵盖了数据库开发中最常用的技术点,包括表操作、数据查询、数据管... 目录SQL常用操作精华总结表结构与数据操作高级查询技巧SQL常用操作精华总结表结构与数据操作复制表结

JavaScript时间戳与时间的转化常用方法

《JavaScript时间戳与时间的转化常用方法》在JavaScript中,时间戳(Timestamp)通常指Unix时间戳,即从1970年1月1日00:00:00UTC到某个时间点经过的毫秒数,下面... 目录1. 获取当前时间戳2. 时间戳 → 时间对象3. 时间戳php → 格式化字符串4. 时间字符