JSoup парсинг изображений из Yandex

444
12 февраля 2017, 10:30

Проблема в следующем: Подключаюсь к Яндекс картинкам, беру URL изображения

public void connect(final String query) throws SettingsFileException {
    final String url = "https://yandex.com/images/search?text=";
    final String charset = "UTF-8";
    try {
        Document docImage = Jsoup.connect(url
                + URLEncoder.encode(query, charset)).get();
        logImagePath.info(url
                + URLEncoder.encode(query, charset));
        Element images =
                docImage.select("img.serp-item__thumb").first();
        srcImage = images.attr("src");
        logImagePath.info("src: " + images.attr("src"));
    } catch (IOException e) {
        throw new SettingsFileException(e);
    }
}

Путь к изображению примерно такой:

src: //im3-tub-ru.yandex.net/i?id=647d9959589f7509b140c18dc93273f9&n=33&h=215&w=312

Когда пытаюсь загрузить изображение через ImageIO, вылетает исключение MalformedURLException. Придерживаюсь мнения что это из-за того что в url не указано имя изображения. Есть ли методы обойти подобную проблему, или же я что-то неправильно делаю?

Answer 1

Все оказалось просто, нужно лишь было формировать url в таком виде:

InputStream inputStream = new URL("https:" + srcImage).openStream();
        image = ImageIO.read(inputStream);
READ ALSO
Исключения Proguard при обфускации

Исключения Proguard при обфускации

Решил обфусцировать код приложения, но при работе начали появляться ошибки связанные с библиотекамиРаботаю в Android Studio собираю проект через...

332
Что быстрее и качественее для адаптации Bootstrap или Медиазапросы?

Что быстрее и качественее для адаптации Bootstrap или Медиазапросы?

У меня было задание сверстать адаптивный лендинг за 24 часа

388