Как с помощью jsoup или gson спарсить картинки с сайта?

Пользователь

от josie , в категории: Java , 2 года назад

Как с помощью jsoup или gson спарсить картинки с сайта?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jerrold_langworth , 2 года назад

@josie 

Для того, чтобы спарсить картинки с веб-сайта, можно использовать jsoup или gson в зависимости от того, как сайт организован. Jsoup предоставляет удобные средства для парсинга HTML-страниц, в то время как gson используется для работы с JSON-данными.


С помощью jsoup:

  1. Сначала необходимо подключить jsoup к проекту, используя Maven, Gradle или скачав jar-файл и добавив его в проект.
  2. Затем нужно получить HTML-код страницы с помощью метода connect() и метода get() класса Jsoup:
1
Document doc = Jsoup.connect("https://example.com").get();


  1. Далее можно найти все теги <img> на странице и получить атрибут src с помощью метода attr() и сохранить его в список:
1
2
3
4
5
6
7
Elements images = doc.select("img");
List<String> srcList = new ArrayList<String>();

for (Element image : images) {
    String src = image.attr("src");
    srcList.add(src);
}


  1. Теперь в списке srcList содержатся все ссылки на изображения на странице.


С помощью gson:

  1. Сначала необходимо подключить gson к проекту, используя Maven, Gradle или скачав jar-файл и добавив его в проект.
  2. Затем нужно получить JSON-код страницы с помощью метода connect() и метода get() класса Jsoup:
1
String json = Jsoup.connect("https://example.com").ignoreContentType(true).execute().body();


  1. Далее нужно распарсить JSON-код с помощью gson и сохранить все ссылки на изображения в список:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
JsonElement element = JsonParser.parseString(json);
JsonObject object = element.getAsJsonObject();
JsonArray images = object.getAsJsonArray("images");

List<String> srcList = new ArrayList<String>();

for (JsonElement image : images) {
    String src = image.getAsJsonObject().get("src").getAsString();
    srcList.add(src);
}


  1. Теперь в списке srcList содержатся все ссылки на изображения на странице, которые были получены из JSON-кода.

Пользователь

от ian.heidenreich , 9 месяцев назад

@josie 

Приведенный код будет работать, если сайт возвращает HTML-страницу с изображениями в тегах или JSON со ссылками на изображения. Однако многие современные веб-сайты загружают изображения динамически с использованием JavaScript или AJAX, что значительно усложняет процесс парсинга.


Для таких случаев, где изображения загружаются асинхронно или динамически, требуется выполнение JavaScript на стороне клиента. Для этого лучше использовать инструменты, способные интерпретировать и выполнять JavaScript, такие как Selenium WebDriver с браузерными драйверами.


Selenium WebDriver позволяет автоматизировать действия в браузере, запускать JavaScript и получать данные после полной загрузки страницы. Вот простой пример использования Selenium WebDriver для парсинга изображений с сайта:

  1. Установите Selenium WebDriver и соответствующий браузерный драйвер (например, Chrome Driver).
  2. Напишите код на Java для запуска браузера, загрузки веб-страницы и получения ссылок на изображения:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.WebElement;
import java.util.List;

public class ImageParser {
    public static void main(String[] args) {
        WebDriver driver = new ChromeDriver();
        driver.get("https://example.com");

        List<WebElement> images = driver.findElements(By.tagName("img"));
        for (WebElement image : images) {
            String src = image.getAttribute("src");
            System.out.println(src);
        }

        driver.quit();
    }
}


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