BeautifulSoup文档2-详细方法 | 对象的种类有哪些?

简介: BeautifulSoup文档2-详细方法 | 对象的种类有哪些?

1 使用细节

  • 将一段文档传入BeautifulSoup 的构造方法,就能得到一个文档的对象,;
  • 可以传入一段字符串或一个文件句柄,比如:
from bs4 import BeautifulSoup

soup = BeautifulSoup(open("index.html"))

soup = BeautifulSoup("<html>data</html>")

2 对象的种类

2.1 种类说明

  • Beautiful SoupHTML文档转换成一个树形结构,每个节点都是Python对象;
  • 所有对象为4种: Tag , NavigableString , BeautifulSoup , Comment .

2.2 Tag对象

  • XMLHTML原生文档中的tag相同;
# -*- coding:utf-8 -*-
# 作者:NoamaNelson
# 日期:2023/2/14 
# 文件名称:bs02.py
# 作用:BeautifulSoup的使用
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson


from bs4 import BeautifulSoup

soup = BeautifulSoup('<b class="boldest">Extremely bold</b>', 'html.parser')
tag = soup.b
print(type(tag))
  • 输出为:
<class 'bs4.element.Tag'>
  • tag很很多属性,两个最重要的属性: name和attributes

2.2.1 name属性

  • 通过.name 来获取tag的名字;
print(tag.name)
  • 输出为:
b
  • 可以修改tag的name:
tag.name = "blockquote"
print(tag)
  • 输出为:
<blockquote class="boldest">Extremely bold</blockquote>

2.2.2 attributes属性

  • 一个tag可能有很多个属性. tag <b class="boldest"> 有一个 “class” 的属性,值为 “boldest” . tag的属性的操作方法与字典相同:
print(tag["class"])
  • 输出为:
['boldest']
  • 也可以直接”点”取属性, 比如: .attrs
print(tag.attrs)
  • 输出为:
{'class': ['boldest']}
  • tag的属性可以被添加,删除或修改. 操作方法与字典一样:
tag['class'] = 'verybold'
tag['id'] = 1
print(tag)

del tag['class']
del tag['id']
print(tag)

print(tag.get('class'))
  • 输出为:
<blockquote class="verybold" id="1">Extremely bold</blockquote>
<blockquote>Extremely bold</blockquote>
None

2.2.3 多值属性

  • 最常见的多值的属性是 class (一个tag可以有多个CSS的class).;
  • 还有一些属性 rel , rev , accept-charset , headers , accesskey .;
  • Beautiful Soup中多值属性的返回类型是list:
# 多值属性
css_soup = BeautifulSoup('<p class="body strikeout"></p>', 'html.parser')
print(css_soup.p['class'])

css_soup = BeautifulSoup('<p class="body"></p>', 'html.parser')
print(css_soup.p['class'])
  • 输出为:
['body', 'strikeout']
['body']

2.3 NavigableString对象

  • NavigableString 类来包装tag中的字符串;
# NavigableString类
soup = BeautifulSoup('<b class="boldest">Extremely bold</b>', 'html.parser')
print(tag.string)
print(type(tag.string))
  • 输出为:
Extremely bold
<class 'bs4.element.NavigableString'>
  • 使用 replace_with() 方法替换tag中的字符串:
# replace_with() 方法
tag.string.replace_with("No longer bold")
print(tag)
  • 输出为:
<blockquote>No longer bold</blockquote>

2.4 BeautifulSoup对象

  • BeautifulSoup 对象表示的是一个文档的全部内容;
  • 它支持 遍历文档树搜索文档树 中描述的大部分的方法;
  • 包含了一个值为 “[document]” 的特殊属性:
# BeautifulSoup类
# [document]属性
print(soup.name)
  • 输出为:
[document]

2.5 Comment对象

  • Comment 对象是一个特殊类型的 NavigableString 对象;
  • Comment可以对注释进行解析;
# Comment对象
markup = "<b><!--Hey, buddy. Want to buy a used parser?--></b>"
soup = BeautifulSoup(markup, 'html.parser')
comment = soup.b.string
print(comment)
print(type(comment))
  • 输出为:
Hey, buddy. Want to buy a used parser?
<class 'bs4.element.Comment'>

3 本文涉及的源码

# -*- coding:utf-8 -*-
# 作者:NoamaNelson
# 日期:2023/2/14 
# 文件名称:bs02.py
# 作用:BeautifulSoup的使用
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson


from bs4 import BeautifulSoup

# name属性
soup = BeautifulSoup('<b class="boldest">Extremely bold</b>', 'html.parser')
tag = soup.b
print(type(tag))
print(tag.name)

# 修改name
tag.name = "blockquote"
print(tag)
print(tag["class"])

# Attributes属性
print(tag.attrs)

# tag属性修改删除等操作
tag['class'] = 'verybold'
tag['id'] = 1
print(tag)
del tag['class']
del tag['id']
print(tag)
print(tag.get('class'))


# 多值属性
css_soup = BeautifulSoup('<p class="body strikeout"></p>', 'html.parser')
print(css_soup.p['class'])

css_soup = BeautifulSoup('<p class="body"></p>', 'html.parser')
print(css_soup.p['class'])

# NavigableString类
print(tag.string)
print(type(tag.string))
# replace_with() 方法
tag.string.replace_with("No longer bold")
print(tag)

# BeautifulSoup类
# [document]属性
print(soup.name)
# Comment对象
markup = "<b><!--Hey, buddy. Want to buy a used parser?--></b>"
soup = BeautifulSoup(markup, 'html.parser')
comment = soup.b.string
print(comment)
print(type(comment))
目录
相关文章
|
1月前
|
XML 数据格式 开发者
解析数据的Beautiful Soup 模块(一)
解析数据的Beautiful Soup 模块(一)
|
1月前
|
前端开发 Python
解析数据的Beautiful Soup 模块(二)
解析数据的Beautiful Soup 模块(二)
|
6月前
|
XML 数据格式
Beautiful Soup 库提供了许多常用的方法
【5月更文挑战第10天】Beautiful Soup库用于HTML/XML文档解析和操作,提供初始化、查找、提取信息及修改文档的方法。如:find()和find_all()查找元素,.string或.get_text()获取文本,.attrs获取属性,.append()、.insert()、.remove()、.replace_with()、.unwrap()和.wrap()修改文档结构。还有.prettify()格式化输出,.encode()和.decode()处理编码。这些功能组合使用可灵活处理文档信息。
38 1
WK
|
2月前
|
XML 移动开发 数据格式
Beautiful Soup支持哪些解析器
Beautiful Soup是一款强大的库,用于解析HTML和XML文档。它支持多种解析器,包括Python标准库中的`html.parser`、lxml的HTML和XML解析器以及html5lib。`html.parser`无需额外安装,但速度较慢;lxml则基于C语言,速度快且支持XPath;html5lib则完全支持HTML5标准,容错性好但速度较慢。用户可通过`features`参数指定解析器,选择最适合需求的解析器可提升效率与准确性。
WK
171 2
WK
|
2月前
|
XML 前端开发 API
Beautiful Soup有哪些支持功能
Beautiful Soup是一个强大的Python库,用于从HTML或XML文件中提取数据。它支持多种解析器,如html.parser、lxml和html5lib,能灵活应对不同格式的文档。通过丰富的API,可以轻松遍历解析树,按标签名、属性或字符串内容搜索和提取数据。此外,Beautiful Soup还支持简单的树修改操作,处理不同编码的文档,并具备良好的容错性。从4.0版本起,它引入了CSS选择器,使搜索更加便捷。详尽的官方文档和广泛的社区支持使其成为处理网页数据的理想选择。
WK
39 1
|
5月前
|
数据采集 Web App开发 数据挖掘
使用Python和BeautifulSoup轻松抓取表格数据
使用Python和BeautifulSoup,结合代理IP,可以从网页抓取表格数据,如中国气象局的天气信息。通过requests库发送HTTP请求,BeautifulSoup解析HTML提取表格。安装必要库后,设置代理IP,发送请求,解析HTML找到表格,提取数据并存储。通过Pandas进行数据分析,如计算平均气温。这种方法让数据抓取和分析变得更加便捷。
130 3
使用Python和BeautifulSoup轻松抓取表格数据
|
6月前
|
数据采集 XML 数据可视化
如何用Beautiful Soup解析HTML内容
如何用Beautiful Soup解析HTML内容
68 1
|
6月前
|
XML 前端开发 数据格式
​Beautiful Soup 4.12.0 文档(一)
​Beautiful Soup 4.12.0 文档(一)
|
6月前
|
XML 机器学习/深度学习 移动开发
​Beautiful Soup 4.12.0 文档(三)
​Beautiful Soup 4.12.0 文档(三)
|
6月前
|
XML 前端开发 数据格式
​Beautiful Soup 4.12.0 文档(二)
​Beautiful Soup 4.12.0 文档(二)