Как получить через jsoap больше 20/30 картинок с google/yandex?

Artem Altuhov

Делаю вот так

List<imageobject> objects = new ArrayList<>();
        final String url = "https://yandex.com/images/search?text=";
        final String charset = "UTF-8";
        // TODO: 26.04.2017 сделать поиск по русским словам нормальный 
        try {
            Document docImage = Jsoup.connect(url
                    + URLEncoder.encode(strings[0], charset)+"&isize=large").get();
            Elements images =
                    docImage.select("img.serp-item__thumb");
            for(Element e:images){
                String srcImage = e.attr("src");
                objects.add(new ImageObject("","https:"+srcImage+".jpg"));
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
</imageobject>

Получаю только 30 картинок, как получить больше? И ещё, сюда же, почему русские слова в поисковом запросе как-то не так понимает, в чём ошибка?

1 ответ

Artem Altuhov

Вам нужно использовать стандартные API для работы с Yandex/Google - там есть возможность получать ответы в виде JSON постранично. RTFM

А парсить напрямую выдачу поисковика дело ненадежное - поисковик изменит формат выдачи и у вас все разлетится. Например метка изображения будет не img.serp-item__thumb, а что-то другое и все - приехали.

Гораздо спокойнее да и проще пользоваться специальными API, которые поисковики уже сами для вас разработали.

licensed under cc by-sa 3.0 with attribution.