我尝试使用this网址中的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
部分;如何知道元素是空还是空?谢谢!
答案 0 :(得分:2)
这个怎么样:
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);
}
}
我注意到实际的图片网址是在data-src下而不是src。
答案 1 :(得分:1)
我解决了我的问题! 这是代码:
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);
}
}
}
我能够通过选择图像的父级来解决我的问题:如果父级没有内容,则文章没有嵌入图片,否则会嵌入图片。
答案 2 :(得分:0)
尝试使用imageMainUrl
打印Log.i("value",imageMainUrl);
,您将遍历这样的问题。
并且还会从您获取图像的位置发布html DOM
篇文章。