Beautiful Soup - 获取标签内的文本



HTML 中有两种类型的标签。许多标签都是成对出现的,即开始标签和结束标签。顶级 <html> 标签对应着结束标签 </html> 是主要示例。其他还有 <body> 和 </body>,<p> 和 </p>,<h1> 和 </h1> 等等。其他标签是自闭合标签,例如 <img> 和 <a>。自闭合标签不像大多数带有开始和结束符号的标签(例如 <b>Hello</b>)那样包含文本。在本章中,我们将了解如何使用 Beautiful Soup 库获取此类标签内部的文本部分。

Beautiful Soup 中有多种方法/属性可用于获取与标签对象关联的文本。

序号 方法及描述
1 text 属性

获取 PageElement 的所有子字符串,如果指定了分隔符,则使用分隔符连接。

2 string 属性

子元素的字符串便捷属性。

3 strings 属性

从当前 PageElement 下的所有子对象生成字符串部分。

4 stripped_strings 属性

与 strings 属性相同,但删除了换行符和空格。

5 get_text() 方法

返回此 PageElement 的所有子字符串,如果指定了分隔符,则使用分隔符连接。

考虑以下 HTML 文档:

<div id="outer">
   <div id="inner">
      <p>Hello<b>World</b></p>
      <img src='logo.jpg'>
   </div>
</div>

如果我们检索已解析的文档树中每个标签的 stripped_string 属性,我们会发现两个 div 标签和 p 标签有两个 NavigableString 对象,Hello 和 World。<b> 标签嵌入 world 字符串,而 <img> 没有文本部分。

以下示例从给定 HTML 文档中的每个标签中获取文本:

示例

html = """
<div id="outer">
   <div id="inner">
      <p>Hello<b>World</b></p>
      <img src='logo.jpg'>
   </div>
</div>
"""
from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')
for tag in soup.find_all():
   print ("Tag: {} attributes: {} ".format(tag.name, tag.attrs))
   for txt in tag.stripped_strings:
      print (txt)
       
   print()

输出

Tag: div attributes: {'id': 'outer'} 
Hello
World

Tag: div attributes: {'id': 'inner'} 
Hello
World

Tag: p attributes: {} 
Hello
World

Tag: b attributes: {} 
World

Tag: img attributes: {'src': 'logo.jpg'}
广告

© . All rights reserved.