如何从 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 中提取图像的步骤
- 使用 HTMLDocument() 构造函数初始化 HTML 文档。
- 使用
GetElementsByTagName(
"img"
) 方法收集所有<img>
元素。该方法返回 HTML 文档的<img>
元素的列表。 - 利用
Select()
方法创建相对图像 URL 的不同集合,并使用 GetAttribute("src"
) 方法提取每个<img>
元素的src
属性。 - 使用 Url 类和“HTMLDocument”类的“BaseURI”属性创建绝对图像 URL。
- 对于每个绝对 URL,使用
RequestMessage(
url
) 构造函数创建一个请求。 - 使用文档的
Context.Network.Send(request)
方法发送请求。检查响应以确保其成功。 - 如果响应成功,请使用
File.WriteAllBytes()
方法将每个图像保存到本地文件。 - 在代码片段中,我们通过检查 URL 的协议来检查图像是否采用 Base64 编码格式,如果是,则设置图像名称和扩展名。
Aspose.HTML for .NET 是一个高级 HTML 解析库。人们可以创建、编辑、浏览节点、提取数据、合并 HTML、XHTML、MD、EPUB 和 MHTML 文件并将其转换为 PDF、DOCX、图像和其他流行格式。此外,它还可以开箱即用地处理 CSS、HTML Canvas、SVG、XPath 和 JavaScript,以扩展操作任务。有关 C# 库安装和系统要求的更多详细信息,请参阅 Aspose.HTML 文档 。
其他支持的 C# 库功能
使用 Aspose.HTML for .NET 库来解析和操作基于 HTML 的文档。清晰、安全、简单!