如何使用 BeautifulSoup 搜索解析树?


查找标签和 HTML 树的内容表示使用 BeautifulSoup 搜索解析树。还有其他方法可以实现这一点,但 find() 和 find_all() 方法是搜索解析树最常用的方法。我们可以借助这些技术使用 BeautifulSoup 解析 HTML 树。应用 Beautiful Soup 的一个好处是,即使我们从另一种语言转向,初学者也很容易学习。它提供了出色、详尽的文档,使我们能够快速掌握内容。

语法

以下语法在示例中使用:

BeautifulSoup()

Beautiful Soup 是 Python 程序中一个内置方法,用于从 HTML 和 XML 文件中提取数据。它使我们能够搜索、导航和更新数据搜索的结构以及导航和更新这些文件中的数据结构。

find()

这是一个 Python 中的内置函数,可用于确定给定文本中子字符串第一次出现的索引。

find_all()

find_all() 是 Python 中一个内置的 BeautifulSoup 库方法,它会显示满足指定条件的所有标签的所有出现。它返回所有匹配的标签列表。

安装要求:

pip install beautifulsoup4

这是必要的安装命令,可用于运行基于 BeautifulSoup 的程序。

方法 1:搜索特定标签

此程序使用两个内置方法 - BeautifulSoup(),它接受两个参数,即 html_content,通过在其中使用一些标签将值设置为 HTML 代码,以及 html.parser,它是一个用于处理结构化标记的工具。它定义了 HTMLParser 类,用于解析 HTML 文件。它有助于网络爬虫或网络抓取。

示例

from bs4 import BeautifulSoup
# Storing of HTML Tags
html_content = '''
<html>
<body>
   <h1>Title</h1>
   <p>This is paragraph</p>
</body>
</html>
'''
# Create the BeautifulSoup object
soup = BeautifulSoup(html_content, 'html.parser')
# Search for the <h1> tag
p_tag = soup.find('p')
if p_tag:
   print("Found <p> tag:", p_tag.text)
else:
   print("The <p> tag not found")

输出

Found <h1> tag: This is paragraph

方法 2:搜索多个标签

该程序使用两个方法 BeautifulSoup() 和 find_all(),它们将计算以查找多个标签,如 p 标签或任何其他标签。find_all() 方法返回多个标签的列表。

示例

from bs4 import BeautifulSoup
# Storing of HTML Tags
html_content = '''
<html>
<body>
   <h1>Title</h1>
   <p>Paragraph 1</p>
   <p>Paragraph 2</p>
   <h3>Hello World</h3>
   <h3>Inner World</h3>
</body>
</html>
'''
# Create a BeautifulSoup object
soup = BeautifulSoup(html_content, 'html.parser')
# Search for all <p> tags
h3_tags = soup.find_all('h3')
if h3_tags:
   print("Found", len(h3_tags), "<h3> tags:")
   for h3 in h3_tags:
      print(h3.text)
else:
   print("Could not find any <h3> tags")

输出

Found 2 <h3> tags:
Hello World
Inner World

方法 3:搜索具有特定属性的标签

该程序使用两个方法 BeautifulSoup() 和 find() [它接受两个参数 - tag_name 和 attrs={‘id’: ‘id_name’}],它们将查找具有特定属性的标签。

示例

from bs4 import BeautifulSoup
# Storing of HTML tags
html_content = '''
<html>
<body>
   <h1 class="title">Title</h1>
   <p id="para1">Paragraph 1</p>
   <p id="para2">Paragraph 2</p>
</body>
</html>
'''
# Create a BeautifulSoup object
soup = BeautifulSoup(html_content, 'html.parser')

# Search for the <p> tag with id="paragraph2"
p_tag = soup.find('p', attrs={'id': 'para2'})
if p_tag:
   print("Found <p> tag with id='para2':", p_tag.text)
else:
   print("Could not find <p> tag with id='para2'")

输出

Found <p> tag with id='para2': Paragraph 2

结论

我们讨论了三种不同的方法来解决基于使用 BeautifulSoup 搜索解析树的问题陈述。创建 BeautifulSoup 对象后,我们可以使用其方法来导航和从 HTML 内容中提取数据。它通常用作其他应用程序或脚本中用于从 HTML 和 XML 文件中进行网络抓取和数据提取的工具。

更新于: 2023-07-17

179 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告