Извлечение изображений с веб-сайта – Примеры Java

Если вы веб-разработчик, графический дизайнер, исследователь, журналист, студент или просто работаете над личным проектом, вам наверняка понадобятся изображения и возможность собирать их с веб-сайтов. Сохранение изображений вручную – копирование каждого URL-адреса и загрузка их по одному – может отнимать много времени и быть неэффективным. Однако вы можете использовать библиотеку Aspose.HTML for Java для автоматизации этого процесса и извлечения изображений с веб-сайта программным путем.

В этой статье мы рассмотрим, как программно извлекать различные типы изображений с веб-сайта с помощью Java. С помощью Aspose.HTML for Java вы можете легко создать инструмент, который анализирует HTML-страницу, определяет источники изображений и загружает их. Это мощное решение для тех, кому нужно собирать изображения для анализа, архивирования или создания контента – без лишних хлопот, связанных с выполнением этой работы вручную.

Извлечение изображений с веб-сайта

Большинство изображений в HTML-документе представлено с помощью элемента <img>. Следующий фрагмент кода демонстрирует, как использовать Aspose.HTML for Java для поиска изображений, указанных этим элементом. Итак, чтобы загрузить изображения с веб-сайта, необходимо выполнить несколько следующих шагов:

  1. Используйте конструктор HTMLDocument(Url) для создания экземпляра HTMLDocument, передав ему URL веб-страницы, которую вы хотите обработать.
  2. Вызовите метод getElementsByTagName(“img”), чтобы получить все <img> элементы из документа. Метод возвращает коллекцию элементов <img>, присутствующих на странице.
  3. Пройдитесь по элементам <img> и используйте метод getAttribute(“src”), чтобы получить значение атрибута src каждого изображения. Каждый src добавляется в набор urls.
  4. Используйте класс Url вместе со свойством BaseURI документа для преобразования относительных путей к изображениям в абсолютные URL.
  5. Для каждого абсолютного URL-адреса изображения создайте запрос с помощью конструктора RequestMessage(url) и отправьте его с помощью document.getContext().getNetwork().send(request). При этом возвращается ResponseMessage.
  6. Если ответ свидетельствует об успехе, извлеките данные изображения с помощью 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, выполните следующие действия:

  1. Загрузите веб-страницу с помощью конструктора HTMLDocument(Url), передав в него URL-адрес сайта, который вы хотите проанализировать.
  2. Используйте метод getElementsByTagName(“link”), чтобы собрать все <link> элементы из документа.
  3. Отфильтруйте результаты, чтобы включить только элементы, у которых атрибут rel имеет значение "icon", так как они определяют ссылки-значки.
  4. Извлеките относительные URL, вызвав getAttribute(“href”) для каждого отфильтрованного элемента <link>.
  5. Создайте абсолютные URL-адреса иконок, используя класс Url и метод getBaseURI() из HTMLDocument.
  6. Отправьте запрос для каждой иконки с помощью класса RequestMessage и метода document.getContext().getNetwork().send().
  7. Проверьте ответ и, если он успешен, сохраните иконку локально с помощью метода 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 – в любое время и в любом месте.

Текст “Веб-приложения HTML”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.