用 Python 从网站提取 SVG

SVG 是一种专为网络设计的矢量格式,常用于 HTML 文档中。它的主要优点是能够在不降低质量的情况下缩放至任何尺寸,因此非常适合在不同尺寸的显示器上保持视觉清晰度。除了可扩展性,SVG 还具有可编程性、文件小、高级样式选项和交互性等优点,所有这些都增强了网页的视觉吸引力和功能性。对于设计人员和开发人员来说,从网站中提取 SVG 图像是一项挑战,尤其是在右键单击保存或打开图像等标准方法无效的情况下。

使用 Aspose.HTML for Python via .NET,您可以轻松地以编程方式从网站中提取 SVG 图像。该库提供了处理内嵌 SVGs外部 SVGs 的工具,简化了定位和提取这些图像的过程。我们的 Python 库简化了从网站获取 SVG 的过程,提供了比手动提取方法更有效的替代方法。

从网站提取 SVG - Inline SVG

内联 SVG 图像是 SVG 元素<svg>,其内容描述了图像。与通过 URL 链接的外部 SVG 图像不同,内嵌 SVG 直接嵌入网页的 HTML 代码中。这些嵌入式 SVG 不作为单独文件存储,因此需要特殊处理才能访问和保存。

要保存网站上的内联 SVG 图像,我们需要找到 HTML 文档中的所有<svg>元素,并使用 outer_html 属性提取其内容。以下是从网站下载 SVG 图像的分步指南:

  1. 使用 HTMLDocument(Url) 构造函数创建一个 HTMLDocument 类实例,并向其传递要从中提取内联 SVG 图像的网站的 URL。
  2. 使用 get_elements_by_tag_name(“svg”) 方法收集所有 <svg> 元素。该方法返回 HTML 中嵌入的 <svg> 元素的列表。
  3. 遍历<svg>元素列表,并将每个 SVG 保存到本地文件系统。
  4. 使用 outer_html 属性可获取 <svg> 元素的完整 HTML 表示形式。为避免覆盖,每个 <svg> 都以唯一的文件名保存。

以下 Python 代码演示了使用 Aspose.HTML Python 库从网页中提取内联 SVG 图像的直接方法:

 1# Extract inline SVGs from website using Python
 2
 3import os
 4import aspose.html as ah
 5
 6# Prepare the output directory
 7output_dir = "output/svg/"  # Change this to your actual output directory
 8os.makedirs(output_dir, exist_ok=True)
 9
10# Open a document you want to extract inline SVG images from
11with ah.HTMLDocument("https://docs.aspose.com/svg/net/drawing-basics/svg-shapes/") as document:
12    # Collect all inline SVG images
13    images = document.get_elements_by_tag_name("svg")
14
15    for i, image in enumerate(images):
16        # Save every SVG image to a local file system
17        with open(os.path.join(output_dir, f"{i}.svg"), 'w', encoding='utf-8') as file:
18            file.write(image.outer_html)

注意: 某些 SVG 文件可能受版权保护,因此在提取和使用它们之前,请查看使用条款。例如,在你的设计项目中使用公司徽标或其他提取的 SVG 文件可能会被视为剽窃,你不应该这样做。在使用网站所有者的文件之前,最好先征得他们的同意。

从网站提取 SVG - External SVG

外部 SVG 是指存储在 HTML 文档之外的 SVG 文件,并通过<img>标记等方式加载到文档中。将 SVG 文件从 HTML 中分离出来,就可以在多个地方重复使用相同的 SVG 图像,而无需重复代码,从而使网页更高效、更易于维护。

外部 SVG 图像由 <img> 元素表示,而该元素也可以指代其他类型的图像,因此应进一步过滤 SVG 图像。下面的 Python 代码使用 Aspose.HTML Python 库自动完成从网页中提取 SVG 图像的过程。代码首先定义并创建了一个输出目录来存储 SVG 文件。然后,代码从指定的 URL 加载 HTML 文档。它收集文档中的所有 <img> 元素,检索它们的 src 属性,并筛选出以.svg 结尾的 URL,以分离 SVG 图像。代码会使用文档的基本 URI 将这些相对 URL 转换为绝对 URL。对于每个绝对 SVG URL,它都会发送网络请求以检索 SVG 图像。如果请求成功,它就会使用从 URL 路径名导出的文件名将 SVG 文件保存到本地文件系统中。

 1# Download external SVG images from HTML using Python
 2
 3import os
 4import aspose.html as ah
 5import aspose.html.net as ahnet
 6
 7# Define the output directory
 8output_dir = "output/svg/"
 9os.makedirs(output_dir, exist_ok=True)
10
11# Open the HTML document from a URL
12document = ah.HTMLDocument("https://products.aspose.com/html/python-net/")
13
14# Collect all <img> elements
15images = document.get_elements_by_tag_name("img")
16
17# Create a distinct collection of relative image URLs
18urls = set(img.get_attribute("src") for img in images)
19
20# Filter only SVG images
21svg_urls = [url for url in urls if url.endswith(".svg")]
22
23# Convert relative URLs to absolute using Url from aspose.html
24abs_urls = [ah.Url(url, document.base_uri) for url in svg_urls]
25
26for url in abs_urls:
27    # Create a network request for the SVG
28    request = ahnet.RequestMessage(url.href)
29
30    # Send request to fetch the SVG
31    response = document.context.network.send(request)
32
33    # Check if request succeeded
34    if response.is_success:
35        # Determine local file path
36        file_path = os.path.join(output_dir, os.path.basename(url.pathname))
37
38        # Save SVG to local filesystem
39        with open(file_path, "wb") as f:
40            f.write(response.content.read_as_byte_array())

结论

Aspose.HTML for Python via .NET 库为以编程方式从网站中提取 SVG 图像提供了强大的功能,包括内联和外部 SVG。要提取内联 SVG 图像,可使用 HTMLDocument(Url) 构造函数加载文档,应用 get_elements_by_tag_name("svg") 方法收集所有 SVG 元素,然后使用 outer_html 属性将每个 SVG 图像保存到本地。对于外部 SVG,可采用类似的方法收集<img>元素,筛选 SVG 文件,构建绝对 URL 并保存图像。

这些 Python 示例演示了如何自动从网页中提取 SVG 图像。这对于归档或分析网页内容非常有用,也有利于设计人员和开发人员在不深入研究源代码的情况下从网站中提取 SVG。

下载 Aspose.HTML for Python via .NET库,成功、快速、轻松地处理您的 HTML 文档。Python 库可以创建、修改、提取数据、转换和渲染 HTML 文档,而无需外部软件。它支持 EPUB、MHTML、XML、SVG 和 Markdown 等流行文件格式,并可渲染为 PDF、DOCX、XPS 和图像文件格式。

您可以从 GitHub 下载完整的示例和数据文件。

Aspose.HTML 提供 HTML 网络应用程序,这是一个在线集合,包含免费的转换器、合并器、搜索引擎优化工具、HTML 代码生成器、URL 工具、网络可访问性检查器等。这些应用程序可在任何装有网络浏览器的操作系统上运行,无需安装任何其他软件。无论你身在何处,都能轻松转换、合并、编码、生成 HTML 代码,从网页中提取数据,或分析网页以进行搜索引擎优化。使用我们的 HTML 网络应用程序集来执行日常任务,让您的工作流程完美无瑕!

文本 “HTML 网络应用程序”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.