Извлечение изображений с веб-сайта на 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// Open a document you want to download images from
 2final HTMLDocument document = new HTMLDocument("https://docs.aspose.com/svg/net/drawing-basics/svg-shapes/");
 3
 4// Collect all <img> elements
 5HTMLCollection images = document.getElementsByTagName("img");
 6
 7// Create a distinct collection of relative image URLs
 8Iterator<Element> iterator = images.iterator();
 9java.util.Set<String> urls = new HashSet<>();
10for (Element e : images) {
11    urls.add(e.getAttribute("src"));
12}
13
14// Create absolute image URLs
15java.util.List<Url> absUrls = urls.stream()
16    .map(src -> new Url(src, document.getBaseURI()))
17    .collect(Collectors.toList());
18
19// foreach to while statements conversion
20for (Url url : absUrls) {
21    // Create an image request message
22    final RequestMessage request = new RequestMessage(url);
23
24    // Extract image
25    final ResponseMessage response = document.getContext().getNetwork().send(request);
26
27    // Check whether a response is successful
28    if (response.isSuccess()) {
29        String[] split = url.getPathname().split("/");
30        String path = split[split.length - 1];
31
32        // Save file to a local file system
33        FileHelper.writeAllBytes(path, response.getContent().readAsByteArray());
34    }
35}

Это простое и эффективное решение позволяет автоматизировать процесс извлечения изображений, экономя ваше драгоценное время.

Примечание: Всегда соблюдайте законы об авторском праве и убедитесь, что у вас есть необходимые разрешения или лицензии, прежде чем использовать сохраненные изображения в коммерческих целях. Мы не поддерживаем извлечение и использование контента из сторонних источников в коммерческих целях без соответствующего разрешения.

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

Иконки в 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// Open a document you want to download icons from
 2final HTMLDocument document = new HTMLDocument("https://docs.aspose.com/html/net/message-handlers/");
 3
 4// Collect all <link> elements
 5HTMLCollection links = document.getElementsByTagName("link");
 6
 7// Leave only "icon" elements
 8java.util.Set<Element> icons = new HashSet<>();
 9for (Element link : links) {
10    if ("icon".equals(link.getAttribute("rel"))) {
11        icons.add(link);
12    }
13}
14
15// Create a distinct collection of relative icon URLs
16java.util.Set<String> urls = new HashSet<>();
17for (Element icon : icons) {
18    urls.add(icon.getAttribute("href"));
19}
20
21// Create absolute image URLs
22java.util.List<Url> absUrls = urls.stream()
23    .map(src -> new Url(src, document.getBaseURI()))
24    .collect(Collectors.toList());
25
26// foreach to while statements conversion
27for (Url url : absUrls) {
28    // Create a downloading request
29    final RequestMessage request = new RequestMessage(url);
30
31    // Extract icon
32    final ResponseMessage response = document.getContext().getNetwork().send(request);
33
34    // Check whether a response is successful
35    if (response.isSuccess()) {
36        String[] split = url.getPathname().split("/");
37        String path = split[split.length - 1];
38
39        // Save file to a local file system
40        FileHelper.writeAllBytes(path, response.getContent().readAsByteArray());
41    }
42}

Вы можете использовать эти примеры 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.