如何使用 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 文件中进行网络抓取和数据提取的工具。