首页 > 解决方案 > Jsoup查找标签是否不存在

问题描述

我正在尝试提取一些汽车广告的 img 链接。我遇到了这个问题,因为图像是可选的,我真的无法检查广告是否有图像。例如,假设我有以下广告: 在此处输入图像描述

这是我的代码:

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 变量是否为空或 null 但它只会返回第一个和第三个添加的源图像。

标签: imagejsoupextract

解决方案


不要选择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 上没有图像的链接有 class 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++;
    }

推荐阅读