小能豆

使用 Python 和 beautifulsoup 进行网页抓取:BeautifulSoup 函数保存了什么?

py

使用 Python 和 beautifulsoup 进行网页抓取:BeautifulSoup 函数保存了什么?


阅读 19

收藏
2024-12-31

共1个答案

小能豆

在使用 Python 和 BeautifulSoup 进行网页抓取时,BeautifulSoup 函数的主要作用是将HTML或XML文档解析为一个树状结构的对象模型,这个模型可以方便地用于操作和提取网页中的内容。

1. BeautifulSoup 保存的内容

BeautifulSoup 函数接受一个HTML或XML文档作为输入,返回一个 BeautifulSoup 对象。这个对象是一个解析后的文档结构,包含了网页的所有内容和标签。它的主要特点包括:

  • HTML/DOM 树的表示
  • BeautifulSoup 对象内部保存了整个HTML文档的结构,可以像操作DOM一样操作其中的节点和属性。
  • HTML文档中的每个标签、属性和文本都可以通过此对象访问。

  • 对HTML的修复

  • 如果HTML文档格式不规范,BeautifulSoup 会尝试自动修复文档,使其能够被正确解析。

2. 示例代码

from bs4 import BeautifulSoup

html_doc = """
<html>
  <head><title>Example Page</title></head>
  <body>
    <h1>Main Heading</h1>
    <p class="intro">This is an example paragraph.</p>
    <a href="https://example.com">Visit Example</a>
  </body>
</html>
"""

# 使用 BeautifulSoup 解析 HTML
soup = BeautifulSoup(html_doc, 'html.parser')

# 查看 BeautifulSoup 对象
print(soup.prettify())  # 美化输出整个HTML内容

输出:

<html>
 <head>
  <title>
   Example Page
  </title>
 </head>
 <body>
  <h1>
   Main Heading
  </h1>
  <p class="intro">
   This is an example paragraph.
  </p>
  <a href="https://example.com">
   Visit Example
  </a>
 </body>
</html>

3. 使用 BeautifulSoup 对象的主要功能

(1) 访问文档内容

BeautifulSoup 对象可以直接访问HTML的内容。

print(soup.title)        # <title>Example Page</title>
print(soup.title.string) # Example Page
print(soup.a)            # <a href="https://example.com">Visit Example</a>

(2) 查找标签

  • 查找特定标签:
    python print(soup.find('p')) # <p class="intro">This is an example paragraph.</p>
  • 查找所有标签:
    python print(soup.find_all('p')) # [<p class="intro">This is an example paragraph.</p>]

(3) 提取属性

link = soup.find('a')
print(link['href'])  # https://example.com

(4) 获取文本内容

print(soup.get_text())  
# 输出:
# Example Page
# Main Heading
# This is an example paragraph.
# Visit Example

4. BeautifulSoup 内部保存的主要结构

在解析后,BeautifulSoup 以树状结构存储HTML文档,其核心组件包括:

  • Tag:每个HTML标签被解析为Tag对象,包含标签名、属性和值。例如:
    python tag = soup.h1 print(tag.name) # h1 print(tag.string) # Main Heading

  • NavigableString:HTML文档中的文本部分以NavigableString存储。例如:
    python print(soup.h1.string) # Main Heading

  • BeautifulSoup 对象本身:表示整个文档,通常是解析的根节点。

5. 总结

  • BeautifulSoup 函数的返回值是一个解析后的HTML文档对象,它保存了整个HTML内容的树状结构。
  • 你可以通过该对象高效地提取、遍历和操作HTML文档中的各种内容,包括标签、属性和文本。
  • 它的核心功能和灵活性让网页抓取变得简单、直观且强大。
2024-12-31