Извлечение изображений с веб-сайта – Примеры Java
Если вы веб-разработчик, графический дизайнер, исследователь, журналист, студент или просто работаете над личным проектом, вам наверняка понадобятся изображения и возможность собирать их с веб-сайтов. Сохранение изображений вручную – копирование каждого URL-адреса и загрузка их по одному – может отнимать много времени и быть неэффективным. Однако вы можете использовать библиотеку Aspose.HTML for Java для автоматизации этого процесса и извлечения изображений с веб-сайта программным путем.
В этой статье мы рассмотрим, как программно извлекать различные типы изображений с веб-сайта с помощью Java. С помощью Aspose.HTML for Java вы можете легко создать инструмент, который анализирует HTML-страницу, определяет источники изображений и загружает их. Это мощное решение для тех, кому нужно собирать изображения для анализа, архивирования или создания контента – без лишних хлопот, связанных с выполнением этой работы вручную.
Извлечение изображений с веб-сайта
Большинство изображений в HTML-документе представлено с помощью элемента <img>
. Следующий фрагмент кода демонстрирует, как использовать Aspose.HTML for Java для поиска изображений, указанных этим элементом. Итак, чтобы загрузить изображения с веб-сайта, необходимо выполнить несколько следующих шагов:
- Используйте конструктор
HTMLDocument(Url) для создания экземпляра
HTMLDocument
, передав ему URL веб-страницы, которую вы хотите обработать. - Вызовите метод
getElementsByTagName(“img”), чтобы получить все
<img>
элементы из документа. Метод возвращает коллекцию элементов<img>
, присутствующих на странице. - Пройдитесь по элементам
<img>
и используйте метод getAttribute(“src”), чтобы получить значение атрибутаsrc
каждого изображения. Каждыйsrc
добавляется в наборurls
. - Используйте класс
Url вместе со свойством
BaseURI
документа для преобразования относительных путей к изображениям в абсолютные URL. - Для каждого абсолютного URL-адреса изображения создайте запрос с помощью конструктора
RequestMessage(url) и отправьте его с помощью
document.getContext().getNetwork().send(request)
. При этом возвращаетсяResponseMessage
. - Если ответ свидетельствует об успехе, извлеките данные изображения с помощью
response.getContent().readAsByteArray()
и сохраните их в локальной файловой системе с помощьюFileHelper.writeAllBytes()
.
1// Extract images from website using Java
2
3// Open a document you want to download images from
4final 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
10Iterator<Element> iterator = images.iterator();
11java.util.Set<String> urls = new HashSet<>();
12for (Element e : images) {
13 urls.add(e.getAttribute("src"));
14}
15
16// Create absolute image URLs
17java.util.List<Url> absUrls = urls.stream()
18 .map(src -> new Url(src, document.getBaseURI()))
19 .collect(Collectors.toList());
20
21// foreach to while statements conversion
22for (Url url : absUrls) {
23 // Create an image request message
24 final RequestMessage request = new RequestMessage(url);
25
26 // Extract image
27 final ResponseMessage response = document.getContext().getNetwork().send(request);
28
29 // Check whether a response is successful
30 if (response.isSuccess()) {
31 String[] split = url.getPathname().split("/");
32 String path = split[split.length - 1];
33
34 // Save file to a local file system
35 FileHelper.writeAllBytes($o(path), response.getContent().readAsByteArray());
36 }
37}
Это простое и эффективное решение позволяет автоматизировать процесс извлечения изображений, экономя ваше драгоценное время.
Примечание: Всегда соблюдайте законы об авторском праве и убедитесь, что у вас есть необходимые разрешения или лицензии, прежде чем использовать сохраненные изображения в коммерческих целях. Мы не поддерживаем извлечение и использование контента из сторонних источников в коммерческих целях без соответствующего разрешения.
Извлечение иконок с веб-сайта
Иконки в HTML-документах обычно задаются с помощью элементов <link>
с атрибутом rel="icon"
. Чтобы извлечь иконки с веб-сайта с помощью Aspose.HTML for Java, выполните следующие действия:
- Загрузите веб-страницу с помощью конструктора HTMLDocument(Url), передав в него URL-адрес сайта, который вы хотите проанализировать.
- Используйте метод
getElementsByTagName(“link”), чтобы собрать все
<link>
элементы из документа. - Отфильтруйте результаты, чтобы включить только элементы, у которых атрибут
rel
имеет значение"icon"
, так как они определяют ссылки-значки. - Извлеките относительные URL, вызвав
getAttribute(“href”) для каждого отфильтрованного элемента
<link>
. - Создайте абсолютные URL-адреса иконок, используя класс
Url и метод
getBaseURI()
из HTMLDocument. - Отправьте запрос для каждой иконки с помощью класса
RequestMessage и метода
document.getContext().getNetwork().send()
. - Проверьте ответ и, если он успешен, сохраните иконку локально с помощью метода
FileHelper.writeAllBytes()
. В результате все иконки веб-сайта, на которые есть ссылки в HTML, будут загружены и сохранены в вашей локальной файловой системе.
1// Download icons from website using Java
2
3// Open a document you want to download icons from
4final 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
10java.util.Set<Element> icons = new HashSet<>();
11for (Element link : links) {
12 if ("icon".equals(link.getAttribute("rel"))) {
13 icons.add(link);
14 }
15}
16
17// Create a distinct collection of relative icon URLs
18java.util.Set<String> urls = new HashSet<>();
19for (Element icon : icons) {
20 urls.add(icon.getAttribute("href"));
21}
22
23// Create absolute image URLs
24java.util.List<Url> absUrls = urls.stream()
25 .map(src -> new Url(src, document.getBaseURI()))
26 .collect(Collectors.toList());
27
28// foreach to while statements conversion
29for (Url url : absUrls) {
30 // Create a downloading request
31 final RequestMessage request = new RequestMessage(url);
32
33 // Extract icon
34 final ResponseMessage response = document.getContext().getNetwork().send(request);
35
36 // Check whether a response is successful
37 if (response.isSuccess()) {
38 String[] split = url.getPathname().split("/");
39 String path = split[split.length - 1];
40
41 // Save file to a local file system
42 FileHelper.writeAllBytes($o(path), response.getContent().readAsByteArray());
43 }
44}
Вы можете использовать эти примеры Java для автоматизации извлечения всех изображений с веб-сайта, что может быть полезно для таких задач, как архивирование, исследование, анализ веб-контента или любое другое приложение для личного использования.
Aspose.HTML предоставляет набор бесплатных онлайн Веб-приложений HTML, включая конвертеры, слияния, SEO-инструменты, генераторы HTML-кода, утилиты URL и многое другое. Эти инструменты работают в любой операционной системе и не требуют установки дополнительного программного обеспечения. Если вам нужно конвертировать или объединить файлы, извлечь веб-данные, сгенерировать HTML-код или проанализировать страницы на предмет SEO, вы можете сделать все это прямо в Интернете. Упростите свои повседневные задачи и повысьте производительность с помощью наших простых в использовании веб-приложений HTML – в любое время и в любом месте.