文章目录
- 将一段文档传入BeautifulSoup 的构造方法,就能得到一个文档的对象,; 可以传入一段字符串或一个文件句柄,比如: from bs4 import BeautifulSoup soup = BeautifulSoup(open("index.html")) soup = BeautifulSoup("<html>data</html>")
-
- Beautiful Soup将HTML文档转换成一个树形结构,每个节点都是Python对象; 所有对象为4种: Tag , NavigableString , BeautifulSoup , Comment .
- 与XML或HTML原生文档中的tag相同;
# -*- coding:utf-8 -*-
# 作者:NoamaNelson
# 日期:2023/2/14
# 文件名称:bs02.py
# 作用:BeautifulSoup的使用
# 博客: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
- 通过.name 来获取tag的名字; print(tag.name) 输出为: b 可以修改tag的name: tag.name = "blockquote" print(tag) 输出为: <blockquote class="boldest">Extremely bold</blockquote>
- 一个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
- 最常见的多值的属性是 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']
- 用 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>
- BeautifulSoup 对象表示的是一个文档的全部内容; 它支持 遍历文档树 和 搜索文档树 中描述的大部分的方法; 包含了一个值为 “[document]” 的特殊属性: # BeautifulSoup类 # [document]属性 print(soup.name) 输出为: [document]
- 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'>
- # -*- coding:utf-8 -*- # 作者:NoamaNelson # 日期:2023/2/14 # 文件名称:bs02.py # 作用:BeautifulSoup的使用 # 博客: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))
(2-详细方法 | 对象的种类有哪些?),
(2-详细方法 | 对象的种类有哪些?)
- 将一段文档传入
BeautifulSoup 的构造方法,就能得到一个文档的对象,;
- 可以传入一段字符串或一个文件句柄,比如:
from bs4 import BeautifulSoup
soup = BeautifulSoup(open("index.html"))
soup = BeautifulSoup("<html>data</html>")
BeautifulSoup 的构造方法,就能得到一个文档的对象,;from bs4 import BeautifulSoup
soup = BeautifulSoup(open("index.html"))
soup = BeautifulSoup("<html>data</html>")
Beautiful Soup将HTML文档转换成一个树形结构,每个节点都是Python对象;
- 所有对象为4种:
Tag , NavigableString , BeautifulSoup , Comment .
Beautiful Soup将HTML文档转换成一个树形结构,每个节点都是Python对象;Tag , NavigableString , BeautifulSoup , Comment .
- 与
XML或HTML原生文档中的tag相同;
# -*- coding:utf-8 -*-
# 作者:NoamaNelson
# 日期:2023/2/14
# 文件名称:bs02.py
# 作用:BeautifulSoup的使用
# 博客: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
XML或HTML原生文档中的tag相同;# -*- coding:utf-8 -*-
# 作者:NoamaNelson
# 日期:2023/2/14
# 文件名称:bs02.py
# 作用:BeautifulSoup的使用
# 博客: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'>
name和attributes
- 通过
.name 来获取tag的名字;
print(tag.name)
- 输出为:
b
- 可以修改tag的name:
tag.name = "blockquote"
print(tag)
- 输出为:
<blockquote class="boldest">Extremely bold</blockquote>
.name 来获取tag的名字;print(tag.name)
b
tag.name = "blockquote"
print(tag)
<blockquote class="boldest">Extremely bold</blockquote>
- 一个
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
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
- 最常见的多值的属性是
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']
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']
- 用
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>
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>
BeautifulSoup 对象表示的是一个文档的全部内容;
- 它支持
遍历文档树 和 搜索文档树 中描述的大部分的方法;
- 包含了一个值为
“[document]” 的特殊属性:
# BeautifulSoup类
# [document]属性
print(soup.name)
- 输出为:
[document]
BeautifulSoup 对象表示的是一个文档的全部内容;遍历文档树 和 搜索文档树 中描述的大部分的方法;“[document]” 的特殊属性:# BeautifulSoup类
# [document]属性
print(soup.name)
[document]
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'>
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'>
# -*- coding:utf-8 -*-
# 作者:NoamaNelson
# 日期:2023/2/14
# 文件名称:bs02.py
# 作用:BeautifulSoup的使用
# 博客: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))
# -*- coding:utf-8 -*-
# 作者:NoamaNelson
# 日期:2023/2/14
# 文件名称:bs02.py
# 作用:BeautifulSoup的使用
# 博客: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))
© 版权声明
文章版权归作者所有,未经允许请勿转载。