使用 Aspose.HTML 从网站提取图片
假设您是一名网络开发人员、平面设计师、研究员、记者或学生,总之,您是一个正在开发自己项目的人。在这种情况下,你显然需要在项目开发过程中使用图片。手动从网站下载图片需要花费很长时间。不过,您可以使用 Aspose.HTML for .NET 库 以编程方式从网站上提取图片。
在本文中,我们将探讨如何使用 Aspose.HTML for .NET API 从网站中提取各种类型的图像。使用我们的 C# 库可以帮助您从网站下载图片。这比手动挖掘和查找要好得多。让我们试试吧!以编程方式从网站提取图片!
从网站提取图片 – C# 代码
HTML 文档中的大多数图片都使用 <img>
元素表示。下面举例说明如何使用 Aspose.HTML for .NET 查找由该元素指定的图片。因此,要从网站下载图片,应采取以下几个步骤:
- 使用 HTMLDocument(Url) 构造函数创建一个 HTMLDocument 类实例,并将您要查找图像的网站 URL 传递给它。
- 使用
GetElementsByTagName(“img”) 方法收集所有
<img>
元素。该方法返回 HTML 文档中<img>
元素的列表。 - 使用
Select()
方法创建相对图像 URL 的独特集合,并使用 GetAttribute(“src”) 方法提取每个<img>
元素的src
属性。 - 使用
Url 类和
HTMLDocument
类的 BaseURI 属性创建绝对图像 URL。 - 对于每个绝对 URL,使用 RequestMessage(url) 构造函数创建一个请求。
- 使用文档的 Context.Network.Send(request) 方法发送请求。将检查响应以确保发送成功。
- 最后,如果响应成功,则使用
File.WriteAllBytes()
方法将每幅图像保存到本地文件中。
1// Extract images from website using C#
2
3// Open a document you want to download images from
4using HTMLDocument document = new HTMLDocument("https://docs.aspose.com/svg/net/drawing-basics/svg-shapes/");
5
6// Collect all <img> elements
7HTMLCollection images = document.GetElementsByTagName("img");
8
9// Create a distinct collection of relative image URLs
10IEnumerable<string> urls = images.Select(element => element.GetAttribute("src")).Distinct();
11
12// Create absolute image URLs
13IEnumerable<Url> absUrls = urls.Select(src => new Url(src, document.BaseURI));
14
15foreach (Url url in absUrls)
16{
17 // Create an image request message
18 using RequestMessage request = new RequestMessage(url);
19
20 // Extract image
21 using ResponseMessage response = document.Context.Network.Send(request);
22
23 // Check whether a response is successful
24 if (response.IsSuccess)
25 {
26 // Save image to a local file system
27 File.WriteAllBytes(Path.Combine(OutputDir, url.Pathname.Split('/').Last()), response.Content.ReadAsByteArray());
28 }
29}
注: 在将保存的图像用于商业目的之前,必须遵守版权法并获得适当的许可或授权。我们不支持数据提取和未经许可将他人文件用于商业目的。
提取图标 – C# 代码
图标是 HTML 文档中的一种图像,它是使用rel
属性设置为icon
的<link>
元素指定的。让我们看看如何使用 Aspose.HTML for .NET 库从网站中提取图标:
- 使用 HTMLDocument(Url) 构造函数创建一个 “HTMLDocument “类实例,并将要提取图标的网站 URL 传递给它。
- 使用
GetElementsByTagName(“link”) 方法收集所有
<link>
元素。 - 要过滤掉非图标图像,可使用
Where()
方法,该方法根据 `link => link.GetAttribute(“rel”) == “icon “表达式过滤集合。因此,“icon “集合将只包含 “rel “属性值为 “icon “的 “链接”。 - 使用
Select()
方法创建相对图标 URL 的独特集合,并使用 GetAttribute(“href”) 方法提取每个<link>
元素的href
属性。 - 使用
Url 类和
HTMLDocument
类的 BaseURI 属性创建绝对图标 URL。 - 然后,针对每个绝对 URL,使用 RequestMessage 类创建一个请求。
- 使用文档的 Context.Network.Send(request) 方法发送请求。将检查响应以确保发送成功。
- 如果响应成功,则使用
File.WriteAllBytes()
方法将图标保存到本地文件。这样,您的本地文件夹中就会有来自网站的图标集合。
1// Download icons from website using C#
2
3// Open a document you want to download icons from
4using HTMLDocument document = new HTMLDocument("https://docs.aspose.com/html/net/message-handlers/");
5
6// Collect all <link> elements
7HTMLCollection links = document.GetElementsByTagName("link");
8
9// Leave only "icon" elements
10IEnumerable<Element> icons = links.Where(link => link.GetAttribute("rel") == "icon");
11
12// Create a distinct collection of relative icon URLs
13IEnumerable<string> urls = icons.Select(icon => icon.GetAttribute("href")).Distinct();
14
15// Create absolute icon URLs
16IEnumerable<Url> absUrls = urls.Select(src => new Url(src, document.BaseURI));
17
18foreach (Url url in absUrls)
19{
20 // Create a downloading request
21 using RequestMessage request = new RequestMessage(url);
22
23 // Extract icon
24 using ResponseMessage response = document.Context.Network.Send(request);
25
26 // Check whether a response is successful
27 if (response.IsSuccess)
28 {
29 // Save icon to a local file system
30 File.WriteAllBytes(Path.Combine(OutputDir, url.Pathname.Split('/').Last()), response.Content.ReadAsByteArray());
31 }
32}
您可以使用这些 C# 示例自动提取网站中的所有图片,这对于归档、研究、分析网站内容等任务或任何其他个人应用都很有帮助。此外,这也非常适合网页设计师和开发人员在不深入源代码的情况下从网站中提取图片。
您可以从 GitHub 下载完整的 C# 示例和数据文件。
Aspose.HTML 提供 HTML 网络应用程序,它是免费转换器、合并器、搜索引擎优化工具、HTML 代码生成器、URL 工具等的在线集合。这些应用程序可在任何装有网络浏览器的操作系统上运行,无需安装任何其他软件。无论你身在何处,都能轻松转换、合并、编码、生成 HTML 代码,从网络中提取数据,或从搜索引擎优化的角度分析网页。使用我们的 HTML 网络应用程序集来处理您的日常事务,让您的工作流程天衣无缝!