[英]how to know if the Element class is empty or null in Jsoup
我正在尝试使用此 URL中的Jsoup库收集文章列表的图像。
当文章没有嵌入图像时,我使用标准图片。 这是我做的:
for(Element img : document.select(".rullo .rullo-item .lazy>a img[src]")) {
String imageMainUrl = img.attr("src");
if(img.attr("src") == null || img.attr("src").equals("") ||
img.attr("src").isEmpty()){
images.add(bmp);
} else {
String newString = imageMainUrl.replace("data:image/gif;base64,", "");
byte[] decodedString = Base64.decode(imageMainUrl, Base64.DEFAULT);
Bitmap bitmap = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
images.add(bitmap);
}
}
但问题是它永远不会进入if
部分; 如何知道元素是空还是空? 谢谢!
这个怎么样:
for(Element img : doc.select(".rullo .rullo-item .lazy>a img[src]")) {
String imageMainUrl = img.attr("data-src");
URL imageurl = null;
try {
imageurl = new URL(imageMainUrl);
} catch (MalformedURLException e) {
e.printStackTrace();
}
final long imageSize = imageurl.openConnection().getContentLength();
if(img.attr("src") == null || img.attr("src").equals("") ||
img.attr("src").isEmpty() || imageSize > 0){
images.add(bmp);
} else {
byte[] decodedString = Base64.decode(imageMainUrl, Base64.DEFAULT);
Bitmap bitmap = BitmapFactory.decodeByteArray(decodedString, 0, decodedString.length);
images.add(bitmap);
}
}
我注意到实际的图像URL是在data-src下而不是src。
我解决了我的问题!
这是代码:
for(Element picture : document.select(".rullo .rullo-item picture")) {
Elements imageElement = picture.getElementsByClass("attachment-rullo");
String imageUrl = imageElement.attr("data-src");
if(imageUrl == null || imageUrl.equals("")){
images.add(bmp);
} else {
try{
InputStream input = new java.net.URL(imageUrl).openStream();
Bitmap bitmap = BitmapFactory.decodeStream(input);
images.add(bitmap);
} catch (MalformedURLException e) {
e.printStackTrace();
images.add(bmp);
} catch (FileNotFoundException e) {
e.printStackTrace();
images.add(bmp);
}
}
}
我能够通过选择图像的父级来解决我的问题:如果父级没有内容,则文章没有嵌入图片,否则嵌入了图片。
试着打印出imageMainUrl
使用Log.i("value",imageMainUrl);
你会像那样遍历问题。 并且还可以从您获取图像的位置发布文章的html DOM
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.