如何从网站提取 SVG

从 HTML 中提取图像的能力对于各种应用(包括网络搜刮和内容分析)至关重要。 Aspose.HTML for Python via .NET 是一个功能强大的库,它通过为开发人员提供一系列工具来无缝导航和收集 HTML 文档中的信息,从而简化了这一过程。这个功能强大的解决方案非常适合需要收集 SVG 以进行分析、存档或内容创建的人,从而消除了手工操作的需要。让我们来探讨如何从网页中下载 SVG 图像。


使用 Python 提取 SVG

HTML 文档中的 SVG 图像有两种形式:内嵌 SVG外部 SVG。以下 Python 代码演示了如何使用 Aspose.HTML for Python via .NET 库从网页中自动提取外部 SVG 图像,即与 HTML 分开存储并通过 <img> 标记引用的 SVG 文件:


从网页下载 SVG 的 Python 代码

import os
import aspose.html as ah
import aspose.html.net as ahnet

# Define the output directory
output_dir = "output/svg/"
os.makedirs(output_dir, exist_ok=True)

# Open the document you want to extract external SVGs from
document = ah.HTMLDocument("https://products.aspose.com/html/python-net/")

# Collect all <img> elements
images = document.get_elements_by_tag_name("img")

# Create a distinct collection of relative image URLs
urls = set(img.get_attribute("src") for img in images)

# Filter only SVG images
svg_urls = [url for url in urls if url.endswith(".svg")]

# Convert relative URLs to absolute using Url from aspose.html
abs_urls = [ah.Url(url, document.base_uri) for url in svg_urls]

for url in abs_urls:
    # Create a network request for the SVG
    request = ahnet.RequestMessage(url.href)

    # Send request to fetch the SVG
    response = document.context.network.send(request)

    # Check if request succeeded
    if response.is_success:
        # Determine local file path
        file_path = os.path.join(output_dir, os.path.basename(url.pathname))

        # Save SVG to a local file system
        with open(file_path, "wb") as f:
            f.write(response.content.read_as_byte_array())


从网站提取 SVG 的步骤

  1. 使用 HTMLDocument(Url) 构造函数创建一个 HTMLDocument 类实例,并将要从中提取外部 SVG 图像的网站 URL 传递给它。
  2. 使用 get_elements_by_tag_name("img") 方法从 HTML 文档中收集所有 <img> 元素。该方法会返回页面中嵌入的图像元素列表。
  3. 遍历收集到的 <img> 元素,并使用 get_attribute("src") 方法从每个元素中提取 src 属性。将这些值存储在一个集合中,以消除重复。
  4. 通过检查提取的 URL 是否以".svg “扩展名结尾,对其进行过滤,从而只分离出外部 SVG 图像。
  5. 使用 Url 类和文档的 base_uri 创建绝对 SVG 图像 URL。
  6. 为每个绝对 SVG URL 创建一个 RequestMessage 实例,以准备检索图像的 HTTP 请求。
  7. 发送请求并检查 is_success 属性,以确保响应成功。
  8. 使用 os.path.basename(url.pathname) 从 SVG URL 获取文件名,然后通过将二进制内容写入输出目录将图像保存到本地文件系统。

要进一步了解如何通过编程从网站提取内联和外部 SVG,请参阅文档文章 Extract SVG From Website in Python

注: 始终尊重版权法。在将提取的图片用于商业用途之前,请确保您拥有相应的权利、权限或许可证。我们不赞成或支持未经授权使用受版权保护的内容。



开始使用 Python API

如果您想要解析、操作和管理 HTML 文档,请安装我们灵活、高速的 Aspose.HTML for Python via .NET API。pip 是下载和安装 Python 库的最简单方法。为此,请运行以下命令:

pip install aspose-html-net

有关 Python 库安装和系统要求的更多详细信息,请参阅 Aspose.HTML 文档。

其他支持的功能

使用 Aspose.HTML for Python via .NET 库来解析和操作基于 HTML 的文档。清晰、安全、简单!