以编程方式从网站提取 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 的步骤
- 使用
HTMLDocument(
Url
) 构造函数创建一个 HTMLDocument 类实例,并传递要从中提取外部 SVG 图像的网站的 URL。 - 使用
getElementsByTagName(
"img"
) 方法收集所有<img>
元素。 - 使用
getAttribute(
"src"
) 方法从每个图像元素中提取src
属性,并创建一个不同的相对图像 URL 集合。 - 通过检查每个 URL 是否以
.svg
结尾,仅筛选 SVG 图像 URL,并将其添加到新列表中。 - 使用 Url 类和 HTMLDocument 类的 BaseURI 属性创建绝对图像 URL。
- 使用
RequestMessage(
url
) 构造函数为每个绝对 URL 创建一个请求。发送每个请求并检查响应是否成功。 - 如果响应成功,则使用
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 的文档。清晰、安全、简单!