以编程方式从网站提取 SVG

从 HTML 中提取图像的能力对于各种应用(如网络搜刮和内容分析)来说非常重要。 Aspose.HTML for Java 是一个功能强大的库,它为开发人员提供了一套无缝浏览 HTML 文档并从中收集信息的工具,从而简化了这一过程。让我们来探讨如何从网站中提取外部 SVG 图像。


使用 Java 从 HTML 中提取 SVG

有了 Aspose.HTML Java 库,您就可以使用一套强大的工具来解析和提取 HTML 文档中的数据,从而快速构建自己的应用程序。下面的示例展示了如何仅用几行 Java 代码就从 HTML 文档中提取所有外部 SVG。


从网站提取 SVG 的 Java 代码

// Open a document you want to download external SVGs from
final HTMLDocument document = new HTMLDocument("https://products.aspose.com/html/net/");

// Collect all <img> elements
HTMLCollection images = document.getElementsByTagName("img");

// Create a distinct collection of relative image URLs
java.util.Set<String> urls = new HashSet<>();
for (Element element : images) {
    urls.add(element.getAttribute("src"));
}

// Filter out non SVG images
java.util.List<String> svgUrls = new ArrayList<>();
for (String url : urls) {
    if (url.endsWith(".svg")) {
        svgUrls.add(url);
    }
}
// Create absolute SVG image URLs
java.util.List<Url> absUrls = svgUrls.stream()
    .map(src -> new Url(src, document.getBaseURI()))
    .collect(Collectors.toList());

for (Url url : absUrls) {
    // Create a downloading request
    final RequestMessage request = new RequestMessage(url);

    // Download SVG image
    final ResponseMessage response = document.getContext().getNetwork().send(request);

    // Check whether response is successful
    if (response.isSuccess()) {
        String[] split = url.getPathname().split("/");
        String path = split[split.length - 1];

        // Save file to a local file system
        FileHelper.writeAllBytes(path, response.getContent().readAsByteArray());
    }
}



从 HTML 中提取 SVG 的步骤

  1. 使用 HTMLDocument(Url) 构造函数创建一个 HTMLDocument 类实例,并传递要从中提取外部 SVG 图像的网站的 URL。
  2. 使用 getElementsByTagName("img") 方法收集所有 <img> 元素。
  3. 使用 getAttribute("src") 方法从每个图像元素中提取 src 属性,并创建一个不同的相对图像 URL 集合。
  4. 通过检查每个 URL 是否以 .svg 结尾,仅筛选 SVG 图像 URL,并将其添加到新列表中。
  5. 使用 Url 类和 HTMLDocument 类的 BaseURI 属性创建绝对图像 URL。
  6. 使用 RequestMessage(url) 构造函数为每个绝对 URL 创建一个请求。发送每个请求并检查响应是否成功。
  7. 如果响应成功,则使用 FileHelper.writeAllBytes() 将 SVG 内容保存到本地文件系统。

使用 Aspose.HTML for Java,您可以轻松创建一个工具来解析网页、识别 SVG 图像来源并下载 SVG。对于那些需要收集 SVG 以进行分析、存档或内容创建的人来说,这是一个功能强大的解决方案,而且无需手动操作。要进一步了解如何使用 Java 以编程方式从网站中提取不同类型(内联和外部)的 SVG,请参阅文档文章 Extract SVG from Website in Java

注意:* 在将保存的图像用于商业目的之前,必须尊重版权法并获得适当的许可或授权。未经他人同意,我们不支持提取和使用他人文件用于商业目的。




开始使用 Java HTML 解析器库

HTML API 是一个高级的网络抓取和 HTML 解析库。可以创建、编辑、浏览节点、提取数据并将 HTML、XHTML 和 MHTML 文件转换为 PDF、图像和其他格式。此外,它还开箱即用地处理 CSS、HTML Canvas、SVG、XPath 和 JavaScript 以扩展操作任务。它是一个独立的 API,不需要安装任何软件。
您可以直接从 Aspose Maven Repository 下载其最新版本,并通过将以下配置添加到 pom.xml 将其安装到基于 Maven 的项目中。


Repository

<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>

Dependency

<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-html</artifactId>
<version>version of aspose-html API</version>
<classifier>jdk17</classifier>
</dependency>

其他支持功能

使用 Aspose.HTML for Java 库解析和处理基于 HTML 的文档。清晰、安全、简单!