Beautiful-Soup对象种类

Beautiful Soup对象种类

Beautiful Soup对象种类

  我们要使用BeautifulSoup来爬取网页的时候,需要把网页源码解析成BeautifulSoup可以识别的格式,当我们将 html 文档或字符串传递给 beautifulsoup 构造函数时,beautifulsoup 基本上是将复杂的 html 页面转换为不同的 python 对象。

Beautiful Soup对象种类

  下面晓得博客为你介绍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多值属性
BeautifulSoup对象种类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!

注释及特殊字符串

BeautifulSoup对象种类注释及特殊字符串

  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 提取有用的信息。希望本文对你有所帮助。更多信息,可参考官方文档

  推荐:Beautiful Soup教程


晓得博客,版权所有丨如未注明,均为原创
晓得博客 » Beautiful Soup对象种类

转载请保留链接:https://www.pythonthree.com/beautifulsoup-kinds-of-objects/

滚动至顶部