Beautiful Soup对象种类
我们要使用BeautifulSoup来爬取网页的时候,需要把网页源码解析成BeautifulSoup可以识别的格式,当我们将 html 文档或字符串传递给 beautifulsoup 构造函数时,beautifulsoup 基本上是将复杂的 html 页面转换为不同的 python 对象。
下面晓得博客为你介绍Beautiful Soup对象种类的四种主要对象:
- Tag标签
- NavigableString可以遍历的字符串
- BeautifulSoup
- Comments注释及特殊字符串
Tag标签
HTML Tag标记用于定义各种类型的内容。BeautifulSoup 中的标签对象对应于实际页面或文档中的 HTML 或 XML 标签。
from bs4 import BeautifulSoup
soup = BeautifulSoup('<b class="boldest">TutorialsPoint</b>')
tag = soup.html
print(type(tag))
输出:
<class 'bs4.element.Tag'>
Tag标签包含许多属性和方法,标签的两个重要特征是它的Name名称和Attributes属性。
Tag Name名称
每个标签都包含一个名称,可以通过“.name”作为后缀访问。tag.name 将返回它的标签类型。
print(tag.name)
输出:
'html'
如果我们更改标签名称,BeautifulSoup 生成的 HTML 标记也会反映相同的情况。
tag.name = "Strong"
print(tag)
print(tag.name)
输出:
<Strong><body><b class="boldest">CppSecrets</b></body></Strong>
Strong
Tag Attributes 属性
一个标签对象可以有任意数量的属性。标签 有一个属性“class”,其值为“boldest”。任何不是标记的东西基本上都是一个属性并且必须包含一个值。您可以通过访问键(如上例中访问“class”)或直接通过“.attrs”访问来访问属性。推荐:Python逐行读取文件方法
abc = bs4.BeautifulSoup("<div class='CppSecrets'></div>",'lxml')
tag2 = abc.div
print(tag2['class'])
输出:
['CppSecrets']
我们可以对标签的属性进行各种修改(添加/删除/修改)。
tag2['class'] = 'Online-Learning'
tag2['style'] = '2020'
print(tag2)
print(tag2['class'])
print(tag2['style'])
del tag2['style']
print(tag2)
del tag2['class']
print(tag2)
输出:
<div class="Online-Learning" style="2020"></div>
Online-Learning
2020
<div class="Online-Learning"></div>
<div></div>
Multi-valued attributes多值属性
一些 HTML5 属性可以有多个值。最常用的是 class-attribute,它可以有多个 CSS 值。其他包括“rel”、“rev”、“headers”、“accesskey”和“accept-charset”。美汤中的多值属性显示为列表。
css_soup = bs4.BeautifulSoup('<p class="body"></p>','lxml')
print(css_soup.p['class'])
css_soup = bs4.BeautifulSoup('<p class="body bold"></p>','lxml')
print(css_soup.p['class'])
输出:
['body']
['body', 'bold']
Beautiful Soup对象
BeautifulSoup 是我们尝试抓取 Web 资源时创建的对象。因此,这是我们试图抓取的完整文档。大多数时候,它被视为标记对象。
soup = bs4.BeautifulSoup("<h2 id='message'>Hello,CppSecrets!</h2>",'lxml')
print(type(soup))
print(soup.name)
输出:
<class 'bs4.BeautifulSoup'>
[document]
可以遍历的字符串NavigableString
navigablestring 对象用于表示标签的内容。要访问内容,请使用带有标签的“.string”。
soup = bs4.BeautifulSoup("<h2 id='message'>Hello,CppSecrets.com!</h2>",'lxml')
print(soup.string)
print(type(soup.string))
输出:
Hello,CppSecrets.com!
<class 'bs4.element.NavigableString'>
您可以用另一个字符串替换该字符串,但不能编辑现有字符串。
soup = bs4.BeautifulSoup("<h2 id='message'>Hello,pythonthree.com!</h2>",'lxml')
soup.string.replace_with( "Online Learning!" )
print(soup)
print(soup.string)
输出:
<html><body><h2 id="message">Online Learning!</h2></body></html>
Online Learning!
注释及特殊字符串
Comments注释评论对象说明了网络文档的评论部分。它只是一种特殊类型的 NavigableString。
soup = bs4.BeautifulSoup('<p><!-- My Blog Is WWW.PYTHONTHREE.COM,--></p>','lxml')
comment = soup.p.string
print(type(comment))
print(soup.p.prettify())
输出:
<class 'bs4.element.Comment'>
<p>
<!-- My Blog Is WWW.PYTHONTHREE.COM -->
</p>
总结
以上是晓得博客为你介绍的Beautiful Soup对象种类使用的全部内容,对于新手来说,安装调试使用过程往往是痛苦的,Beautifulsoup 常见任务是提取网页中的所有 URL,我们只需要添加简单的两行代码,就可以用 beautiful soup 4 提取有用的信息。希望本文对你有所帮助。更多信息,可参考官方文档。
Claude、Netflix、Midjourney、ChatGPT Plus、PS、Disney、Youtube、Office 365、多邻国Plus账号购买,ChatGPT API购买,优惠码XDBK,用户购买的时候输入优惠码可以打95折