如何从 HTML 中提取图像

从 HTML 中提取图像的能力对于各种应用程序(例如网页抓取和内容分析)非常重要。 Aspose.HTML for .NET 是一个强大的库,它为开发人员提供了一套工具来无缝导航和收集 HTML 文档中的信息,从而简化了这一过程。让我们探讨如何从 HTML 文档中提取图像。

首先,确保您的项目中安装了 Aspose.HTML for .NET。 这个库的安装过程非常简单。 打开 NuGet 包管理器,搜索 Aspose.HTML,然后安装。 您还可以从包管理器控制台使用以下命令:


安装 Aspose.HTML for .NET

Install-Package Aspose.HTML



使用 C# 从 HTML 中提取图像

使用 Aspose.HTML for .NET 类库,您可以轻松创建自己的应用程序,因为我们的 API 提供了强大的工具集来分析和收集 HTML 文档中的信息。如果您想在产品中使用 HTML 数据抓取功能或以编程方式从 HTML 中提取数据,请参阅下面的代码示例。无论您是构建网络抓取工具还是内容分析器,Aspose.HTML 都能使图像提取成为一个直观的过程。您可以使用几行 C# 代码从 HTML 文档下载所有图像:


从 HTML 中提取图像的 C# 代码

using Aspose.Html;
using Aspose.Html.Net;
using System.Linq;
using System.IO;
...

    // Prepare a path to a source HTML file
    string documentPath = Path.Combine(DataDir, "images-from-html.html");

    // Create an instance of an HTML document
    using (var document = new HTMLDocument(documentPath))
    {
        // Collect all <img> elements
        var images = document.GetElementsByTagName("img");

        // Create a distinct collection of relative image URLs
        var urls = images.Select(element => element.GetAttribute("src")).Distinct();

        // Create absolute image URLs
        var absUrls = urls.Select(src => new Url(src, document.BaseURI));

        foreach (var url in absUrls)
        {
            // Create an image request message
            using var request = new RequestMessage(url);

            // Download image
            using var response = document.Context.Network.Send(request);

            var imgName = url.Pathname.Split('/').Last();

            //Check the image in base64 encoding
            if (url.Protocol == "data:" && response.Headers.ContentType.MediaType.Type == "image")
            {
                // Get the image type and set to extension
                imgName = "img1." + response.Headers.ContentType.MediaType.SubType;
            }

            // Check whether a response is successful
            if (response.IsSuccess)
            {
                // Save image to a local file system
                File.WriteAllBytes(Path.Combine(OutputDir, imgName), response.Content.ReadAsByteArray());
            }
        }
    }



从 HTML 中提取图像的步骤

  1. 使用 HTMLDocument() 构造函数初始化 HTML 文档。
  2. 使用 GetElementsByTagName("img") 方法收集所有 <img> 元素。该方法返回 HTML 文档的<img>元素的列表。
  3. 利用 Select() 方法创建相对图像 URL 的不同集合,并使用 GetAttribute("src") 方法提取每个 <img> 元素的 src 属性。
  4. 使用 Url 类和“HTMLDocument”类的“BaseURI”属性创建绝对图像 URL。
  5. 对于每个绝对 URL,使用 RequestMessage(url) 构造函数创建一个请求。
  6. 使用文档的Context.Network.Send(request)方法发送请求。检查响应以确保其成功。
  7. 如果响应成功,请使用File.WriteAllBytes()方法将每个图像保存到本地文件。
  8. 在代码片段中,我们通过检查 URL 的协议来检查图像是否采用 Base64 编码格式,如果是,则设置图像名称和扩展名。

Aspose.HTML for .NET 是一个高级 HTML 解析库。人们可以创建、编辑、浏览节点、提取数据、合并 HTML、XHTML、MD、EPUB 和 MHTML 文件并将其转换为 PDF、DOCX、图像和其他流行格式。此外,它还可以开箱即用地处理 CSS、HTML Canvas、SVG、XPath 和 JavaScript,以扩展操作任务。有关 C# 库安装和系统要求的更多详细信息,请参阅 Aspose.HTML 文档