Извлечение изображений с веб-сайта на 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// 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, выполните следующие действия:
- Загрузите веб-страницу с помощью конструктора 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// 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 – в любое время и в любом месте.