使用 Aspose.HTML for Java 从网站提取 SVG

SVG 是一种主要为网络设计的矢量图形格式,通常用于 HTML 文档。SVG 的主要优势在于它能够在不降低质量的情况下缩放至任何尺寸。此外,SVG 还具有多种优势,包括可编程性、文件小、样式选项、交互性等,所有这些都能提高网页的视觉吸引力和功能性。

下载 SVG 并不像看起来那么容易。如果你曾经使用过鼠标右键来保存或打开网页上的图片,你可能会注意到从网站上提取 SVG 文件是一项挑战。有时,右键单击并不能在新标签页中打开或保存。那该怎么办呢?您可以手动检查 HTML 代码以识别 SVG 标记,并确定 SVG 内容的开始和结束位置。幸运的是,还有一种更直接的解决方案:您可以使用 Aspose.HTML for Java 以编程方式从网站下载 SVG 文件。

网页上的 SVG 图形可以通过两种方式嵌入:作为 HTML 中的内联 SVG 或作为通过 URL 引用的外部 SVG。在本文中,我们将探讨如何使用 Aspose.HTML for Java API 提取内联和外部 SVG。有了这种方法,您就可以自动收集网站上的每一张 SVG,而无需手动搜索代码。让我们一起来轻松提取 SVG!

从网站提取 SVG – Inline SVG

Inline SVG 图像是 SVG 元素<svg>,其内容描述了图像。内联 SVG 是指将 SVG 代码直接嵌入 HTML 代码,而不是链接到外部 SVG 文件。这是创建网站图标、徽标和其他图形元素的常用技术。

要保存内联 SVG 图像,我们需要找到 HTML 文档中的所有 <svg> 元素,并使用 Element 类的 OuterHTML 属性来获取它们的内容。因此,要从网站下载 SVG,应采取以下几个步骤:

  1. 使用 HTMLDocument(Url) 构造函数创建一个 HTMLDocument 实例,并传递包含内联 SVG 图像的网页 URL。
  2. 调用 getElementsByTagName(“img”) 方法收集 HTML 文档中的所有 <svg> 元素。
  3. 创建一个循环,遍历 images 集合中的每个 SVG 图像。
  4. 对于数组中的每张图片,使用 getOuterHTML() 方法获取 SVG 元素内容,然后使用 FileHelper.writeAllText() 方法将 SVG 内容写入本地的 .svg 文件。
 1// How to extract inline SVG images from a webpage using Java
 2
 3// Open a document you want to download inline SVG images from
 4final HTMLDocument document = new HTMLDocument("https://products.aspose.com/html/net/");
 5
 6// Collect all inline SVG images
 7HTMLCollection images = document.getElementsByTagName("svg");
 8
 9for (int i = 0; i < images.getLength(); i++) {
10    // Save every image to a local file system
11    FileHelper.writeAllText("{i}.svg", images.get_Item(i).getOuterHTML());
12}

注: 在使用 SVG 文件时,请务必遵守版权法。某些 SVG 文件(如公司徽标或品牌图形)可能受到保护,未经许可使用这些文件可能会被视为剽窃。在项目中提取或使用任何 SVG 文件之前,请查看网站的使用条款或联系网站所有者,以获得适当的许可。

从网站提取 SVG – External SVG

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

外部 SVG 图像由 <img> 元素表示,而该元素也可以指代其他类型的图像,因此应进一步过滤 SVG 图像。让我们看看如何使用 Aspose.HTML for Java 库从网站下载 SVG:

  1. 使用 HTMLDocument(Url) 构造函数创建一个 HTMLDocument 类实例,并传递要从中提取外部 SVG 图像的网站的 URL。
  2. 使用 getElementsByTagName("img") 方法收集 HTML 文档中的所有 <img> 元素。
  3. 使用 getAttribute(“src”) 方法提取每个图像元素的 src 属性,并将值存储在一个 Set 中。
  4. 通过检查每个 URL 是否以 .svg 结尾,只过滤 .svg 图像 URL,并将其添加到新列表中。
  5. 使用 Url 类和 HTMLDocument 类的 BaseURI 属性创建绝对 SVG 图像 URL。
  6. 遍历绝对 URL,并使用 RequestMessage 类为每个 SVG URL 创建一个请求。
  7. 使用 document.getContext().getNetwork().send(request) 发送每个请求,并检查响应是否成功。
  8. 最后,如果响应成功,则使用 FileHelper.writeAllBytes() 将 SVG 内容保存到本地文件系统。
 1// Download external SVG images from HTML using Java
 2
 3// Open a document you want to download external SVGs from
 4final HTMLDocument document = new HTMLDocument("https://products.aspose.com/html/net/");
 5
 6// Collect all image elements
 7HTMLCollection images = document.getElementsByTagName("img");
 8
 9// Create a distinct collection of relative image URLs
10java.util.Set<String> urls = new HashSet<>();
11for (Element element : images) {
12    urls.add(element.getAttribute("src"));
13}
14
15// Filter out non SVG images
16java.util.List<String> svgUrls = new ArrayList<>();
17for (String url : urls) {
18    if (url.endsWith(".svg")) {
19        svgUrls.add(url);
20    }
21}
22// Create absolute SVG image URLs
23java.util.List<Url> absUrls = svgUrls.stream()
24        .map(src -> new Url(src, document.getBaseURI()))
25        .collect(Collectors.toList());
26
27// foreach to while statements conversion
28for (Url url : absUrls) {
29    // Create a downloading request
30    final RequestMessage request = new RequestMessage(url);
31
32    // Download SVG image
33    final ResponseMessage response = document.getContext().getNetwork().send(request);
34
35    // Check whether response is successful
36    if (response.isSuccess()) {
37        String[] split = url.getPathname().split("/");
38        String path = split[split.length - 1];
39
40        // Save file to a local file system
41        FileHelper.writeAllBytes($o(path), response.getContent().readAsByteArray());
42    }
43}

这种方法可自动从网页中提取外部 SVG 图像,省去手动下载每个文件的时间和精力。这对于想要从网站上提取 SVG 而无需深入研究源代码的设计人员和开发人员来说,无疑是一大福音。

Aspose.HTML 提供一套免费的在线 HTML 网络应用程序,包括转换器、合并器、搜索引擎优化工具、HTML 代码生成器、URL 工具等。这些基于浏览器的工具适用于所有操作系统,无需安装任何其他软件。无论你是需要转换或合并文件、提取网页数据、生成 HTML 代码,还是分析网页以进行搜索引擎优化,你都可以在网上完成。利用我们易于使用的 HTML 网络应用程序,随时随地简化您的日常任务,提高您的工作效率。

文本 “HTML 网络应用程序”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.