Jsoup найти, если тег не существует - PullRequest
0 голосов
/ 15 сентября 2018

Я пытаюсь извлечь ссылку на img из нескольких автомобильных объявлений. У меня проблемы с этим, потому что изображение является необязательным, и я действительно не могу проверить, есть ли у объявления его изображение или нет. Например, скажем, у меня есть следующие объявления: enter image description here

Вот мой код:

for (Element searchResult : page2.select(".offer-wrapper > table > tbody > tr > td > a > img")) {
   img = searchResult.attr("src");
   list.get(index).setImgLink(img);

   index++;
}

По сути, searchResult никогда не будет нулевым, он найдет только 2 источника изображений, а второе объявление получит изображение третьего. Как можно это обработать, а также найти способ проверить, есть ли во втором объявлении изображение ? Я также пытался проверить, является ли переменная img пустой или нулевой, но она будет возвращать только исходное изображение первого и третьего дополнения.

1 Ответ

0 голосов
/ 15 сентября 2018

Не выбирайте a > img, выберите только a, а затем проверьте, существует ли img:

    Elements searchResults = page2.select(".offer-wrapper > table > tbody > tr > td > a");
    for (Element searchResult : searchResults) {
        Element imgElement = searchResult.select("img").first();
        if (imgElement != null) {
            String imgSrc = imgElement.attr("src");
            list.get(index).setImgLink(imgSrc);
        } else {
            list.get(index).setImgLink(null);
        }
        index++;
    }

РЕДАКТИРОВАТЬ: другой способ проверить изображение

Вы можете заметить, что ссылки без изображения на olx имеют класс nophoto, поэтому эта также работает:

    Elements searchResults = page2.select(".offer-wrapper > table > tbody > tr > td > a");
    for (Element searchResult : searchResults) {
        boolean withoutImage = searchResult.hasClass("nophoto");
        if (!withoutImage) {
            String imgSrc = searchResult.select("img").first().attr("src");
            list.get(index).setImgLink(imgSrc);
        } else {
            list.get(index).setImgLink(null);
        }
        index++;
    }
...