学习笔记之BeautifulSoup(4)——修改文档树、输出

一、修改文档树
1.修改 .string:给tag的 .string 属性赋值,就相当于用当前的内容替代了原来的内容。(如果当前的tag包含了其它tag,那么给它的 .string 属性赋值会覆盖掉原有的所有内容包括子tag)。
2.append():Tag.append() 方法向tag中添加内容,与Python的列表的 .append() 方法用法相同。
代码:
在这里插入图片描述

运行结果:
在这里插入图片描述

3.NavigableString():如果想添加一段文本内容到文档中,可以调用Python的 append() 方法 或调用 NavigableString 的构造方法;如果想要创建一段注释,或 NavigableString 的任何子类, 都需要调用 NavigableString 的构造方法。
代码:
在这里插入图片描述
运行结果:
在这里插入图片描述

4.new_tag()(Beautiful Soup 4.2.1 中新增的方法)
创建一个tag最好的方法是调用工厂方法 BeautifulSoup.new_tag()
代码:
在这里插入图片描述

运行结果:
在这里插入图片描述

5.insert()、insert_before() 和 insert_after()
Tag.insert() 方法与 Tag.append() 方法类似,区别是不会把新元素添加到父节点 .contents 属性的最后,而是把元素插入到指定的位置;insert_before() 方法在当前tag或文本节点前插入内容;insert_after() 方法在当前tag或文本节点后插入内容。
代码:
在这里插入图片描述
运行结果:
在这里插入图片描述

6.clear():Tag.clear() 方法移除当前tag的内容。
代码:
在这里插入图片描述

运行结果:
在这里插入图片描述

7.extract()
PageElement.extract() 方法将当前tag移除文档树,并作为方法结果返回。这个方法实际上产生了2个文档树: 一个是用来解析原始文档的 BeautifulSoup 对象,另一个是被移除并且返回的tag.被移除并返回的tag可以继续调用 extract 方法。
代码:
在这里插入图片描述
运行结果:
在这里插入图片描述
8.decompose()
Tag.decompose() 方法将当前节点移除文档树并完全销毁。
代码:
在这里插入图片描述

运行结果:
在这里插入图片描述
9.replace_with()
PageElement.replace_with() 方法移除文档树中的某段内容,并用新tag或文本节点替代它,replace_with() 方法返回被替代的tag或文本节点,可以用来浏览或添加到文档树其它地方。
代码:
在这里插入图片描述

运行结果:

在这里插入图片描述

10.wrap()和unwrap()
PageElement.wrap() 方法可以对指定的tag元素进行包] ,并返回包装后结果;Tag.unwrap() 方法与 wrap() 方法相反.将移除tag内的所有tag标签,该方法常被用来进行标记的解包,unwrap() 方法返回被移除的tag。
代码:
在这里插入图片描述

运行结果:
在这里插入图片描述

二、输出
1.格式化输出
prettify() 方法将Beautiful Soup的文档树格式化后以Unicode编码输出,每个XML/HTML标签都独占一行,BeautifulSoup 对象和它的tag节点都可以调用 prettify() 方法。
2.压缩输出
如果只想得到结果字符串,不重视格式,那么可以对一个 BeautifulSoup 对象或 Tag 对象使用Python的 unicode() 或 str() 方法;str() 方法返回UTF-8编码的字符串,可以指定 编码 的设置,还可以调用 encode() 方法获得字节码或调用 decode() 方法获得Unicode。
3.输出格式
Beautiful Soup输出时会将HTML中的特殊字符转换成Unicode,如果将文档转换成字符串,Unicode编码会被编码成UTF-8.这样就无法正确显示HTML特殊字符了。
4.get_text()
如果只想得到tag中包含的文本内容,那么可以调用 get_text() 方法,这个方法获取到tag中包含的所有文本内容包括子孙tag中的内容,并将结果作为Unicode字符串返回。可以通过参数指定tag的文本内容的分隔符并去除获得文本内容的前后空白;或者使用 .stripped_strings 生成器,获得文本列表后手动处理列表。
代码:
在这里插入图片描述

运行结果:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值