image - 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 但它只会返回第一个和第三个添加的源图像。
解决方案
不要选择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++;
}
推荐阅读
- amazon-web-services - AWS IOT Core 规则触发不同区域的 lambda 函数
- ldap - 更改子网后 vCenter 无法正常工作
- sap-erp - 投诉存储状态表?
- image-processing - 三个 js Webgl :house floor 全景图到 3D 平面图转换器
- c# - 显示不可用和可用的预订时间段并禁用预订的时间段
- java - 使用 JsonGenerator 将字符串映射到 JSON
- android - 是否可以在弹回堆栈后运行代码
- javascript - 你导入的方式重要吗?
- r - R中两个矩阵的联合特征值
- mysql - 为什么Mysql对单个表使用索引,但在连接时不使用