为什么从HTML中提取图像?(好处与用例)

HTML 文件通常包含几种类型的图像,例如:标准 <img> 标签图像、Base64 内联图像(data:image/...)、在 CSS 中定义的图像(例如,background-image)、SVG 图标和图形、外部链接的图像或嵌入的图像资源。从 HTML 文档中提取图像对于以下用途很有帮助:

  • 内容迁移
  • 从HTML电子邮件中提取媒体
  • 网页爬虫和分析
  • 为机器学习准备训练数据集
  • 将 HTML 转换为 PDF/Word,同时保留媒体
  • 存档网页及其原始资产

HTML 处理 API

GroupDocs.Parser Cloud SDK for .NET 是一个强大的基于 REST 的 API,能够处理所有流行的文件格式,包括 HTML 文件。它使您能够操作 HTML 文件,您可以使用它来:

  • 解析 HTML 文档
  • 提取嵌入式和内联图像
  • 提取 Base64 编码的图像
  • 检测外部图像引用
  • 检索元数据(大小,类型,路径)
  • 下载提取的图像到本地
  • 自动化 HTML 解析工作流程

支持的图像格式

先决条件

  • 一个 GroupDocs Cloud 账户(客户端 ID 和客户端密钥)。
  • .NET 6.0+ 已安装。
  • 视觉 Studio 或兼容的 IDE。
  • NuGet 包: GroupDocs.Parser-Cloud

通过 NuGet 安装

dotnet add package GroupDocs.Parser-Cloud --version 25.7.0

从 HTML 中提取图像使用 C#

以下是一个完整的 C# 示例,演示了使用 Cloud API 提取 HTML 图像。

步骤 1 — 初始化API:

var config = new Configuration("YOUR_CLIENT_ID", "YOUR_CLIENT_SECRET");
var parserApi = new ParserApi(config);
var fileApi = new FileApi(config);

步骤 2 — 提供用于解析的 HTML 文件信息:

var fileInfo = new FileInfo { FilePath = "input.html" };
var options = new ImagesOptions { FileInfo = fileInfo };
var request = new ImagesRequest(options);

步骤 3 — 从 HTML 中提取图像(嵌入式、内联和 Base64):

var response = parserApi.Images(request);

foreach (var image in response.Images)
{
    Console.WriteLine($"Source: {image.Path}, Type: {image.MediaType}, Size: {image.Size}");
}

步骤 4 — 下载提取的图像(适用于 macOS 和 Windows):

var outputDirectory = "/Users/nayyer/Downloads/html-images";
Directory.CreateDirectory(outputDirectory);

foreach (var img in response.Images)
{
    var cloudImagePath = img.Path.Replace("\\", "/");

    var downloadRequest = new DownloadFileRequest(path: cloudImagePath);
    using (var stream = fileApi.DownloadFile(downloadRequest))
    {
        var localPath = Path.Combine(outputDirectory, Path.GetFileName(cloudImagePath));

        using (var fileStream = File.Create(localPath))
        {
            stream.CopyTo(fileStream);
        }

        Console.WriteLine($"Downloaded: {localPath}");
    }
}
// 有关更多示例,请访问 https://github.com/groupdocs-parser-cloud/groupdocs-parser-cloud-dotnet

var configuration = new Configuration("XXXXXXX-XXXXXXX-XXXXXX-XXXXXX", "XXXXXXXXXXXX");
configuration.ApiBaseUrl = "https://api.groupdocs.cloud";

var parserApi = new ParserApi(config);
var fileApi = new FileApi(config);

var fileInfo = new FileInfo { FilePath = "input.html" };
var options = new ImagesOptions { FileInfo = fileInfo };
var request = new ImagesRequest(options);

var response = parserApi.Images(request);

foreach (var image in response.Images)
{
    Console.WriteLine($"Source: {image.Path}, Type: {image.MediaType}, Size: {image.Size}");
}

var outputDirectory = "/Users/nayyer/Downloads/html-images";
Directory.CreateDirectory(outputDirectory);

foreach (var img in response.Images)
{
    var cloudImagePath = img.Path.Replace("\\", "/");

    var downloadRequest = new DownloadFileRequest(path: cloudImagePath);
    using (var stream = fileApi.DownloadFile(downloadRequest))
    {
        var localPath = Path.Combine(outputDirectory, Path.GetFileName(cloudImagePath));

        using (var fileStream = File.Create(localPath))
        {
            stream.CopyTo(fileStream);
        }

        Console.WriteLine($"Downloaded: {localPath}");
    }
}

使用 cURL 下载 HTML 图像

除了 C# 代码片段,我们还可以使用 cURL 命令从 HTML 文件下载图像。

第 1 步 — 生成访问令牌: 此方法的第一步是根据客户端凭据生成 JWT 访问令牌。

curl -v -X POST "https://api.groupdocs.cloud/connect/token" \
-d "grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET" \
-H "Content-Type: application/x-www-form-urlencoded"

*Step 2 — Extract Images:

curl -v -X POST "https://api.groupdocs.cloud/v1.0/parser/images" \
-H  "accept: application/json" \
-H  "authorization: Bearer {ACCESS_TOKEN}" \
-H  "Content-Type: application/json" \
-d "{ "FileInfo": { "FilePath": "inbox/input.html", "StorageName": "internal" }, "OutputPath": "extracted-images"}"

尝试免费在线 HTML 图片提取器

我们提供一个免费的在线 Online HTML Image Extractor,基于 GroupDocs.Parser Cloud API 开发。无需软件安装或下载,可以在网页浏览器中评估 REST API 的功能。

提取 HTML 图像

结论

在本文中,我们已经学习了使用 .NET REST API 从 HTML 中提取图像的最准确方法。使用此 API,您可以:

  • 提取嵌入式和内联图像
  • 解析 Base64 编码的图像
  • 提取 CSS 背景图像
  • 检索链接图像的元数据
  • 通过编程方式下载所有图像

因此,这是在 C# 应用程序中自动化 HTML 媒体提取的最佳解决方案。

相关文章

我们强烈推荐访问以下文章以了解更多信息:

常见问题解答 (FAQs)

  1. 我可以从 HTML 中提取嵌入的 Base64 图像吗? 是的,API 会自动提取 Base64 编码和内联 HTML 图像。

  2. API 是否提取外部链接的图像? API 提取链接图像的元数据;下载它们是可选的。

  3. 我可以提取在 CSS 中引用的图像吗? 是的,内联或嵌入 CSS 引用的图像是支持的。

  4. 支持哪些图像格式? JPG、PNG、BMP、GIF、TIFF 和其他常见图像类型。

  5. 是否有免费试用? 是的。您可以创建一个免费帐户并获得每月 150 次免费的 API 调用。